1視圖
1.1 函數FBV
@app.route和app.add_url_rule參數:
rule, URL規則
view_func, 視圖函數名稱
defaults = None, 默認值, 當URL中無參數,函數需要參數時,使用defaults = {'k': 'v'}
為函數提供參數
endpoint = None, 名稱,用於反向生成URL,即: url_for('名稱')
methods = None, 允許的請求方式,如:["GET", "POST"]
#對URL最后的 / 符號是否嚴格要求,默認嚴格,False,就是不嚴格
strict_slashes = None
'''
@app.route('/index', strict_slashes=False)
#訪問http://www.xx.com/index/ 或http://www.xx.com/index均可
@app.route('/index', strict_slashes=True)
#僅訪問http://www.xx.com/index
'''
#重定向到指定地址
redirect_to = None,
'''
@app.route('/index/<int:nid>', redirect_to='/home/<nid>')
'''
1.2 類CBV
from flask import Flask,request,render_template,redirect
from flask import views
app=Flask(__name__)
def auth(func):
def inner(*args, **kwargs):
print('before')
result = func(*args, **kwargs)
print('after')
return result
return inner
class IndexView(views.MethodView):
methods = ['GET'] # 指定運行的請求方法
# 登錄認證裝飾器加在哪?
decorators = [auth, ] #加多個就是從上往下的效果
def get(self):
print('xxxxx')
return "我是get請求"
def post(self):
return '我是post請求'
# 路由如何注冊?
# IndexView.as_view('index'),必須傳name
app.add_url_rule('/index',view_func=IndexView.as_view('index'))
if __name__ == '__main__':
app.run()
# 用的比較少
# 繼承views.MethodView,只需要寫get,post,delete方法
# 如果加裝飾器decorators = [auth, ]
# 允許的請求方法methods = ['GET']
2 請求
# request.method 提交的方法
# request.args get請求提及的數據 {name:adad,age:123}形式
# request.form post請求提交的數據
# request.values post和get提交的數據總和
# request.cookies 客戶端所帶的cookie
# request.headers 請求頭
# request.path 不帶域名,請求路徑
# # request.full_path 不帶域名,帶參數的請求路徑
# request.url 帶域名帶參數的請求路徑
# request.base_url 帶域名請求路徑
# request.url_root 域名
# request.host_url 域名
# request.host 127.0.0.1:500
# request.files
3 響應
# 響應對象
# 響應相關信息
# return "字符串"
# return render_template('html模板路徑',**{})
# return redirect('/index.html')
# 對着django,JsonResponse
# return jsonify({'k1':'v1'})
aa='hello world'
res=make_response(aa)
res.set_cookie('xxx','lqz')
# 往響應頭中放東西
res.headers['X-Something'] = 'A value'
print(type(res))
from flask.wrappers import Response
return res
# response = make_response(render_template('index.html'))
# response是flask.wrappers.Response類型
# response.delete_cookie('key')
# response.set_cookie('key', 'value')
# response.headers['X-Something'] = 'A value'
# return response
# return 'hello'
