flask框架要学多久[Flask框架]
相信学过Python的小伙伴,肯定都知道Flask这个web开发框架,但是并不是所有人都了解它,下面说一说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这部分主要讲解以下几个部分:
过滤器
语法:{{变量|过滤器}}
Jinja2模板中常用的过滤器有:
capitalize 首字符变大写,其他字符变小写
lower 将值转换为小写字符
upper 将值转换为大写字符
title 将值中的每个单词的首字符变大写
trim 去掉值两端的空格
标签(for循环遍历可迭代对象)
{% for 变量 in 列表|元组|字典 %}{% endfor %}
for标签中的内置对象loop
loop.index 获取下标
loop.index0 从0开始的下标
loop.first True/False
loop.last True/False
宏
下面是一个关于Flask中宏的用法的实例:<!-- 声明宏:接收一个字符串作为参数,将参数放p中打印输出 -->
{% macro showP(str) %}
<h3>使用宏显示的内容:</h3>
<p>{{str}}</p>
{% endmacro %}
<!-- 使用宏 -->
<div>
{% for name in params.list %}
{{showP(name)}}
{% endfor %}
</div>
<!-- 引入外部的宏 -->
{% 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 的错误处理@app.errorhandler(404)
def page_not_fount(e):
return render_template('404.html'),404
2.500 的错误处理
@app.errorhandler(500)
def internal_server_error(500):
return render_template('500.html'),500
404.html 和 500.html 需要自定义
Views
Views这部分主要讲解以下几个部分:
路由
请求方法
url反向解析
request对象
响应response
文件上传
cookies
session
路由
一:基本路由的配置:#http://127.0.0.1:5000/
@app.route('/')
def index():
return "xxx"
二:带参数路由的配置:
1.基本带参数的路由
@app.route('/show/<name>')
def show1(name):
name:表示的就是地址栏上传递的数据
pass
2.指定参数类型的路由
@app.route('/show/<name>/<int:age>')
def show(name,age):
name : 字符串
age : 整数
可选的参数类型为 int float path(字符串,可以有斜杠/)
三:多个路由的配置:
@app.route('/地址1')
@app.route('/地址2')
....
def index():
pass
请求方法
在Flask中默认只能接收get请求,post请求无法接收,但是可以手动设置请求的接收方式。
下面的函数既能接收get请求又能接收post请求@app.route('/xxx',methods=['POST','GET'])
def xxx():
pass
文件上传
html文件:
<form action="/01-file" method="post" enctype="multipart/form-data"><p>
用户姓名: <input type="text" name="uname">
</p>
<p>
用户图像: <input type="file" name="uimg">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
后台代码
@app.route('/01-file',methods=['GET','POST'])def file_views():
if request.method == '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=datetime.datetime.now().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 = request.cookies.get('key')
request.cookies['key']
request.cookies # 拿到所有的cookies
if 'key' in request.cookies:
pass
session
from flask import session配置 SECRET_KEY:
app.config['SECRET_KEY']="thisisarandomstring"
增:
session['key'] = value
删:
del session['key']
查:
value = session['key']
value = session.get('key')
以上是 flask框架要学多久[Flask框架] 的全部内容, 来源链接: utcz.com/z/523043.html