Flask第一天 request,response,會話

Flask第一天 request,response,會話
檢視之request請求:
    request.method      請求方式
    request.path      路由中的路徑
    request.args      
get請求引數的包裝,args是一個ImmutableMultiDict物件,類字典結構物件        
資料儲存也是key-value  
外層是大列表,列表中的元素是元組,元組中左邊是key,右邊是value
    request.form
儲存結構跟args一致
預設是接收post引數
還可以接受put,patch引數
    request.url    完整請求地址
    request.base_url 去掉get引數的URL
    request.remote_addr 請求的客戶端地址
    request.file 上傳檔案
    request.headers  請求頭
    request.cookie 請求中的cookie
檢視之request響應:
    Response建立方式
直接返回字串
render_template 渲染模板,將模板轉換成字串
make_response 建立一個響應,是一個真正的response
Response()建立
 
@blue.route('/testtemplate/')
def testtemplate():
    print(render_template('testresponse.html'))
    print(type(render_template('testresponse.html')))
    return  render_template('testresponse.html')
@blue.route('/testresponse/')
def testresponse():
    template_str = render_template('testresponse.html')
    respon = make_response('<h1>hehe</h1>')
    #respon = make_response(template_str)
    print(type(respon))
    return respon
@blue.route('/responseobj/')
def responseobj():
    respon = Response()
    return respon
       返回配置
 
- 內容
    直接寫,將內容傳遞過去
    @blue.route('/response/')
    def get_response():
        return '帶你裝逼帶你飛,帶你走進垃圾堆!',403
- 狀態碼
    字串形式直接將狀態碼新增到return 的第二個引數
    如果make形勢,直接新增到make的第二個引數上
    # response響應3
    @blue.route('/makeresponse/')
    def make_resp():
        resp = make_response('<h2>我很帥!</h2>',300)
        return resp
     返回重定向
 
- redirect 重定向302
- url_for 反向解析
    
@blue.route('/redirect/')
def make_redir():
    # 固定
    # return redirect('/makeresponse/')
    # 反向解析
    return  redirect(url_for('first.make_resp'))
      丟擲異常,終止程式執行
 
- abort狀態碼
@blue.route('/makeabort/')
def make_abort():
    # 丟擲異常(4xx  5xx)
    abort(404)
    return '睡著了?'
    errohandler
 
- 異常捕獲
- 可以根據狀態或 Exception進行捕獲
- 函式中要包含一個引數,引數用來接收異常資訊
# 捕獲404異常
@blue.errorhandler(404)
def handler404(exception):
    return '<h1>  我是404我怕誰!!! </h1>'
   檢視之會話技術:    
Cookie
客戶端會話技術技術,瀏覽器的會話技術
資料全都是儲存在客戶端
儲存使用的鍵值對結構進行儲存(key-value)
Cookie是通過伺服器建立的Response來建立的
cookie特性
    支援過期時間
    預設會自動攜帶本網站的所有的cookie
    根據域名進行cookie儲存
    不能跨域名
    不能跨瀏覽器
Session
服務端的會話技術
所有資料儲存在伺服器中
預設儲存在記憶體中
    django預設做了資料持久化(存在了資料庫中)
儲存結構也是key-value形式,鍵值對(其實就是字典)
session 是離不開cookie的
 
- 設定session
    session['username'] = username
- 獲取session
    username = session.get('username','遊客')
- 刪除session
    # 方式一: session是存在cookie中的
    resp.delete_cookie('session')
    # 方式二: 直接刪除session中對應資料
    session.pop('username')

  要使用session還需要祕鑰種子SECRET_KEY,在app初始化新增進去即可(app.config[‘SECRET_KEY’] = ‘1231231eqwedfaefdf’);