Flask 学习(一)简单介绍
时间:2019-09-26
本文章向大家介绍Flask 学习(一)简单介绍,主要包括Flask 学习(一)简单介绍使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Flask介绍(轻量级的框架)
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。
使用
from flask import Flask app = Flask(__name__) # 添加路由方式一 @app.route('/') def hello_world(): return 'Hello World!' # 添加路由方式二 # app.add_url_rule('/', view_func=hello_world) if __name__ == '__main__': app.run(host="0.0.0.0", port=9527, debug=True) # wsgi 应用程序网关接口 把你请求处理后发送给对应的app # werkzeug
路由三种返回方式
from flask import Flask, render_template, redirect app = Flask(__name__) # 三种返回方式 @app.route('/') def hello_world(): return 'Hello World!' @app.route("/login") def login(): # 模板渲染 return render_template("login.html") @app.route("/home") def home(): # 重定向 return redirect("/") if __name__ == '__main__': # app.run(host="0.0.0.0", port=9527, debug=True) app.run(debug=True) # wsgi 应用程序网关接口 把你请求处理后发送给对应的app # werkzeug
登录举例
from flask import Flask, render_template, redirect, request,session app = Flask(__name__) app.secret_key = "abcdefg" # Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值 # 三种返回方式 @app.route('/') def hello_world(): return 'Hello World!' @app.route("/login", methods=("GET","POST")) def login(): # 模板渲染 # print(request.path) # print(request.url) # print(request.headers) if request.method == "GET": print(request.args.get("id")) return render_template("login.html") else: # print(request.form) # print(request.values.to_dict()) # 这个里面什么都有,相当于body # print(request.json) # application/json # print(request.data) username = request.form.get("username") password = request.form.get("password") if username == "alex" and password == "123": session["user_info"] = username # session.pop("user_info") #删除session return "登录成功" else: return render_template("login.html", msg="用户名或者密码错误") @app.route("/home") def home(): # 重定向 return redirect("/") if __name__ == '__main__': # app.run(host="0.0.0.0", port=9527, debug=True) app.run(debug=True) # wsgi 应用程序网关接口 把你请求处理后发送给对应的app # werkzeug
login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>登录页面</h1> <form action="/login?id=002" method="post"> <p>用户名:<input type="text" name="username"></p> <p>密码:<input type="text" name="password"></p> <p><input type="submit" value="查看小秘密"></p> <p>{{ msg }}</p> </form> </body> </html>
一般错误解决
使用
@app.route("/xx", methods=("GET","POST"))
使用
app.secret_key = "abcdefg" # Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值
原文地址:https://www.cnblogs.com/xiao-apple36/p/11579070.html
- #19. 计数(容斥原理)
- 左手用R右手Python系列——多进程/线程数据抓取与网页请求
- #15. 钻石
- P1328 生活大爆炸版石头剪刀布
- ASP.NET MVC 5 Authentication Breakdown
- jquery easyui datagrid mvc server端分页排序筛选的实现
- 左手用R右手Python系列——使用多进程进行任务处理
- 2017.9.17校内noip模拟赛解题报告
- MySQL基础入门——MySQL与R语言、Python交互
- BizTalk Orchestration execute Flat file disassembler ReceivePipeline
- MySQL基础入门系列之——字符与日期数据处理
- P2038 无线网络发射器选址
- ggplot2双坐标轴的解决方案
- Modifying namespace in XML document programmatically
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux解压缩文件
- C++核心准则T.11:只要可能就使用标准概念
- 给pugjs的stun主题添加canvas时钟
- C++核心准则T.12:声明局部变量类型时,概念比auto更好
- Arch Linux切换rEFInd开机引导程序
- C++核心准则T.13:对于简单的,单类型参数概念,使用缩略记法更好
- VBA编写Ribbon Custom UI编辑器08——实现ZIP的写入
- 用 Python 写个七夕表白神器
- 3分钟短文 | Laravel 用户授权原来内置了这么多方法
- E0144"const char *" 类型的值不能用于初始化 "char *" 类型的实体的三种解决方法
- 数据采集面对JS加密无所适从?善用这3个工具,搞定一大半的JS逆向!
- 点赞功能设计与实现
- [推荐]Linux入门系列(一)换个角度看Linux其实很简单,带你一起入门
- (建议收藏)Java基础知识笔记(详细)
- 详解:小程序如何授权登录并获取用户绑定手机号?