Flask05--視圖,請求,響應

1視圖html

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'
相關文章
相關標籤/搜索