黑马程序员技术交流社区
标题:
flask
[打印本页]
作者:
wireless
时间:
2018-7-21 16:41
标题:
flask
Flask环境搭建
1.创建开发所需要的虚拟环境
mkvirtualenv 虚拟环境名称 -------->默认是python2的版本
例: mkvirtualenv flask_py2
mkvirtualenv -p python3 虚拟环境名称 -------->pyhton3 的版本
例: mkvirtualenv flask_py3
2.删除虚拟环境
rmvirtualenv 虚拟环境名称
3.联网安装flask-0.10.1版本(开发过程中需要在终端使用pip命令安装flask)
sudo pip install flask==0.10.1
创建python项目
写一个最简单的flask程序(七行代码)
在pycharm中,创建pure python 纯净的python项目,然后选择之间创建的
flask_py3 的虚拟环境
例:创建helloworld.py,开始写代码
初
始
化
参
数
在创
建app
程序
实例
对象
的时
候,Flask类中需传入当前模块名,而__name__就代表当前模块名
app.run()的参数
host 指定ip地址,port指定端口,debug指定是否进入调试模式
指定路由地址
给路由传参
通常我们将同一类url映射到同一个视图函数处理的时候,使用路由传参解决,避免每一个
url写一个视图函数
传递的参数还可以指定类型,(int-整数,path-字符串,float-浮点数),写成如下形式:
指定请求方式
格式:@app.route('路径',methods=["访问方式1","访问方式2",...])
常见的请求方式有 GET POST PUT DELETE
注意点:如果不指定访问方式,默认是GET
url_for() 反解析
可以通过视图函数的名称找到路由路径
如下图中url_for("jing_dong")可以得到路由路径 " /jd "
redirect() 重定向
和url_for()相反,可以通过路由路径,找到对应的视图函数
通常重定向和反解析搭配使用
返回json数据
一般后端程序和前端之后的数据交互格式都是json.有两种指定方式:
1.可以手动去指定Content-Type 为 application/json:
2.可以使用jsonify()方法返回json数据格式, 推荐使用
装饰器路由实现
Flask有两大核心: Werkzeug和Jinja2
-Wekzeug实现路由,调试和web服务器网关接口
-jinja2实现了模板
Werkzeug库的 routing 模块负责实现 URL 解析。不同的 URL 对应不同的视
图函数,routing模块会对请求信息的URL进行解析,匹配到URL对应的视图函
数,执行该函数以此生成一个响应信息。
routing模块内部有:
Rule类
用来构造不同的URL模式的对象,路由URL规则
Map类
存储所有的URL规则和一些配置参数
BaseConverter的子类
负责定义匹配规则
MapAdapter类
负责协调Rule做具体的匹配的工作
jinja2模板引擎
Flask提供的 render_template 函数封装了该模板引擎
render_template 函数的第一个参数是模板的文件名,后面的参数都
是键值对,表示模板中变量对应的真实值。
使用流程:
1.导入remder_template
2.渲染页面,携带数据
3.在文件中,取出数据展示
模板文件语法
1.取出变量的值
{{ 变量名 }}
2.分支语句if
{% if 条件A %}
语句1
{% elif 条件B %}
语句2
{%else%}
语句3
{% endif %}
3.循环语句for
{% for 变量 in 容器%}
{%endfor%}
4.注释
{# 注释内容 #}
过滤器
在模板中提供了一些自带的过滤器,作用是用来刷选某些需要的数据
1.字符串过滤器
格式: {{ 字符串 | 字符串过滤器 }}
lower: 字符串转小写
upper: 字符串转大写
2. 列表过滤器
格式: {{ 列表 | 列表过滤器 }}
列表过滤器:
sort: 排序
length: 列表长度
first: 取出列表第1个元素
request对象
request 就是 flask 中代表当前请求的 request 对象,利用request对象的属性,我们可
以获取到页面的数据
request的常用属性如下:
属性 说明 类型
data 记录请求的数据,并转换为字符串 *
form 记录请求中的表单数据 MultiDict
args 记录请求中的查询参数 MultiDict
cookies 记录请求中的cookie信息 Dict
headers 记录请求中的报文头 EnvironHeaders
method 记录请求使用的HTTP方法 GET/POST
url 记录请求的URL地址 string
files 记录请求上传的文件 *
cookie
用来记录浏览器和服务器之间的交互信息,由服务器设置,存储在浏览器中
设置方式:
response.set_cookie(key,value,max_age)
max_age: 有效时间,单位秒, 如果不设置默认就是一次浏览器会话结束.
例:如下图
获取方式:
request.cookies.get(key)
例:如下图
session
同cookie一样,也是用来存储信息的,session主要用来记录敏感信息,比如:手机号,账号,
密码等信息,当浏览器访问服务器时,有服务器设置,存储在服务器中.
设置 : session[key] = value
获取 : session.get(key)
注意点:
1. session在存储的时候会,先将session空间的地址加密(钥匙sessionID),存储到cookie
中
2. 由于sessionID的生成是加密的,所以需要设置SECRET_KEY
作者:
摩西摩西OvO
时间:
2018-7-23 10:36
作者:
不二晨
时间:
2018-7-23 13:39
优秀,加油加油!
作者:
吴琼老师
时间:
2018-7-26 15:20
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2