pythondashflask导航栏_python第⼋篇:⼗分钟学会Flask 什么是Flask
Flask是⼀个基于Python并且依赖于Jinja2模板引擎和Werkzeug WSGI服务的⼀个微型框架
Flask中包含⼀个轻量级的web 服务器主要⽤于在开发阶段测试使⽤
Falsk使⽤MTV框架模式
MTV框架模式
M : Models , 模型层 , 主要负责根据数据库建模
T : Templates , 模板层 ,处理⽤户的显⽰的内容的,如:html
V : Views ,视图 , 处理与⽤户交互的内容(请求和响应)
下⾯我们从Templates、Views和Models这三个部分来了解下Flask框架
Templates
Templates这部分主要讲解以下⼏个部分:
过滤器
标签(for循环遍历可迭代对象)
继承
⾃定义404/500等错误页⾯
过滤器
语法:
{{变量|过滤器}}
Jinja2模板中常⽤的过滤器有:
capitalize ⾸字符变⼤写,其他字符变⼩写
lower 将值转换为⼩写字符
upper 将值转换为⼤写字符
title 将值中的每个单词的⾸字符变⼤写
trim 去掉值两端的空格
标签
{% for 变量 in 列表|元组|字典 %}
{% endfor %}
for标签中的内置对象loop
loop.index 获取下标
loop.index0 从0开始的下标
loop.first True/False
loop.last True/False
下⾯是⼀个关于Flask中宏的⽤法的实例:{% macro showP(str) %}
使⽤宏显⽰的内容:
{{str}}
{% endmacro %}
{% for name in params.list %}
{{showP(name)}}
{% endfor %}
{% import 'macros.html' as ms %}
{% for name in params.list %}
{{ms.show_p(name)}}
{% endfor %}
继承
⽗模板中:
{% block title %}
⽗模板中的内容
{% endblock %}
⼦模板中:
{% extends '⽗模板.html' %}
{% block title %}
⼦模板中的内容
{% endblock %}
⼦模板中的内容会覆盖⽗模板中的内容
⾃定义404/500等错误页⾯
1.404的错误处理
@handler(404)
def page_not_fount(e):return render_template('404.html'),404
2.500的错误处理
@handler(500)
def internal_server_error(500):return render_template('500.html'),500 404.html 和 500.html 需要⾃定义
Views
Views这部分主要讲解以下⼏个部分:
路由
请求⽅法
url反向解析
request对象
响应response
⽂件上传
cookies
session
路由
⼀:基本路由的配置:
@ute('/')
def index():return "xxx"⼆:带参数路由的配置:1.基本带参数的路由
@ute('/show/')
def show1(name):
name:表⽰的就是地址栏上传递的数据
pass2.指定参数类型的路由
@ute('/show//')
def show(name,age):
name : 字符串
age : 整数
可选的参数类型为int float path(字符串,可以有斜杠/)
三:多个路由的配置:
@ute('/地址1')
@ute('/地址2')
....
def index():
pass
请求⽅法
在Flask中默认只能接收get请求,post请求⽆法接收,但是可以⼿动设置请求的接收⽅式。下⾯的函数既能接收get请求⼜能接收post请求
@ute('/xxx',methods=['POST','GET'])
def xxx():
pass
url反向解析
正向解析:程序⾃动解析,根据@ute()中的访问路径,来匹配处理函数
反向解析:通过视图处理函数的名称⾃动⽣成对应的访问路径
在Flask中要实现反向解析:
url_for(funName,args)
funName:要⽣成地址的函数名
args:该地址中需要的参数
request对象
request中的常⽤成员1.scheme:获取请求⽅案(协议)2.method:获取请求⽅式(重点,取值为 post 或 get)3.args : 获取使⽤get请求⽅式提交过来的数据(重点)4.form : 获取使⽤post请求⽅式提交过来的数据(重点)5.cookies : 获取cookies中的相关信息6.headers : 获取请求消息头的相关信息7.files : 获取上传的⽂件8.path : 获取请求的资源的具体路径(不带参数)9.full_path : 获取完整的请求资源的具体路径(带参数)10.url : 获取完整的请求地址,从协议开始
响应response
响应有下⾯的三种⽅法:1.返回响应模板(可带上参数)
@ute('/')fromflask import render_template
def index1():return render_template('xxx.html', params=locals())2.构建响应对象,并返回fromflask import make_response
@ute('/')
getsavefilenamedef index2():
resp= make_response('响应内容')
resp= make_response(render_template('xxx.html'))returnresp3.重定向fromflask import redirect
@ute('/')
def index3():return redirect('/login')
⽂件上传
html⽂件:
⽤户姓名:
⽤户图像:
后台代码:
@ute('/01-file',methods=['GET','POST'])
def file_views():hod == 'GET':return render_template('01-file.html')else:
#处理的上传的⽂件
#1.得到上传的⽂件
f= request.files['uimg']
#2.将⽂件保存进指定的⽬录处[相对路径]
# print('⽂件名称:'+f.filename)
# f.save('static/'+f.filename)
#3.将⽂件保存进指定的⽬录处[绝对路径]
#获取当前⽂件的所在⽬录名
basedir=os.path.dirname(__file__)
#print('当前⽂件所在⽬录的绝对路径:'+basedir)
#获取当前的时间拼成字符串,再拼上扩展名
ftime=w().strftime("%Y%m%d%H%M%S%f") #获取⽂件的扩展名 (b04.jpg)
ext= f.filename.split('.')[1]
filename= ftime + "." +ext
upload_path= os.path.join(basedir,'static/upload',filename)
# print('完整的上传路径:'+upload_path)
f.save(upload_path)return "Save OK"
cookies
增:
resp=make_response('保存cookie成功')
resp.set_cookie('uname','test',3600)
删:
响应对象.delete_cookie('key')
查询:
uname= ('key')
session
fromflask import session
配置 SECRET_KEY:
session['key'] =value
删:
del session['key']
查:
value= session['key']
value= ('key')
Models
Models这部分主要讲解以下⼏个部分:
数据库连接和基本配置
模型类的关系映射

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。