久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Django 中 cookie的使用

Cookie是瀏覽器在客戶端留下的一段記錄,這段記錄可以保留在內(nèi)存或者硬盤(pán)上。Django里面,對(duì)cookie的讀取和設(shè)置很簡(jiǎn)單。接下來(lái)通過(guò)本文給大家分享Django 中 cookie的使用,感興趣的朋友一

Cookie是瀏覽器在客戶端留下的一段記錄,這段記錄可以保留在內(nèi)存或者硬盤(pán)上。因?yàn)镠ttp請(qǐng)求是無(wú)狀態(tài)的,通過(guò)讀取cookie的記錄,服務(wù)器或者客戶端可以維持會(huì)話中的狀態(tài)。比如一個(gè)常見(jiàn)的應(yīng)用場(chǎng)景就是登錄狀態(tài)。Django里面,對(duì)cookie的讀取和設(shè)置很簡(jiǎn)單。Cookie本身的格式類(lèi)似字典,因此可以通過(guò)request的key或者get獲取;然后他的設(shè)置則是通過(guò)response對(duì)象的set_cookie設(shè)定; 如果要取消cookie,把過(guò)期時(shí)間設(shè)置為當(dāng)前時(shí)間就行了。

獲取Cookie:

request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
  參數(shù):
    default: 默認(rèn)值
    salt: 加密鹽
    max_age: 后臺(tái)控制過(guò)期時(shí)間

設(shè)置Cookie:

rep = HttpResponse(...) 或 rep = render(request, ...)
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密鹽',...)
  參數(shù):
    key,       鍵
    value='',     值
    max_age=None,   超時(shí)時(shí)間
    expires=None,   超時(shí)時(shí)間(IE requires expires, so set it if hasn't been already.)
    path='/',     Cookie生效的路徑,/ 表示根路徑,特殊的:跟路徑的cookie可以被任何url的頁(yè)面訪問(wèn)
    domain=None,   Cookie生效的域名
    secure=False,   https傳輸
    httponly=False  只能http協(xié)議傳輸,無(wú)法被JavaScript獲取(不是絕對(duì),底層抓包可以獲取到也可以被覆蓋)

例1  設(shè)置一個(gè)login登錄界面,一個(gè)index登錄成功之后的跳轉(zhuǎn)界面,如果沒(méi)有登錄那么自動(dòng)跳轉(zhuǎn)到登錄界面

views.py

def index(reqeust):
  # 獲取當(dāng)前已經(jīng)登錄的用戶
  v = reqeust.COOKIES.get('username111')
  if not v:
    return redirect('/login/')
  return render(reqeust,'index.html',{'current_user': v})

注意Cookie的超時(shí)時(shí)間有2種方式,一個(gè)是直接指定max_age(N秒后超時(shí)),一個(gè)是指定expires后面跟一個(gè)具體的時(shí)間對(duì)象

httponly可以禁止JavaScript獲取這個(gè)值,但是實(shí)際上沒(méi)有什么鳥(niǎo)用,chrome或者抓包都能輕松獲取所有的cookie

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>歡迎登錄:{{ current_user }}</h1>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form action="/login/" method="POST">
    <input type="text" name="username" placeholder="用戶名" />
    <input type="password" name="pwd" placeholder="密碼" />
    <input type="submit" />
  </form>
</body>
</html>

例2:

現(xiàn)實(shí)生活中,一般是把這個(gè)驗(yàn)證cookie的功能寫(xiě)成裝飾器,這樣直接在其他函數(shù)上面調(diào)用就行了

把例1改一下

def auth(func):
  def inner(reqeust,*args,**kwargs):
    v = reqeust.COOKIES.get('username111')
    if not v:
      return redirect('/login/')
    return func(reqeust, *args,**kwargs)
  return inner
@auth
def index(reqeust):
  # 獲取當(dāng)前已經(jīng)登錄的用戶
  v = reqeust.COOKIES.get('username111')
  return render(reqeust,'index.html',{'current_user': v})

例3: 我們知道可以使用fbv或者cbv來(lái)路由函數(shù)。例2使用了fbv的方式,用cbv也能實(shí)現(xiàn)

cbv里面,如果只打算裝飾一個(gè)方法,那么直接在方法前面加個(gè)@method_decorator就行;如果打算裝飾這個(gè)類(lèi)里面所有的方法,那么在整個(gè)類(lèi)的最上面進(jìn)行裝飾

views.py

@method_decorator(auth,name='dispatch')
class Order(views.View):
  # @method_decorator(auth)
  # def dispatch(self, request, *args, **kwargs):
  #   return super(Order,self).dispatch(request, *args, **kwargs)
  # @method_decorator(auth)
  def get(self,reqeust):
    v = reqeust.COOKIES.get('username111')
    return render(reqeust,'index.html',{'current_user': v})
  def post(self,reqeust):
    v = reqeust.COOKIES.get('username111')
    return render(reqeust,'index.html',{'current_user': v})
urls.py
 url(r'^order/', views.Order.as_view()),

例4 我們還可以通過(guò)JavaScript或者JQuery來(lái)設(shè)置Cookie,比如在前面分頁(yè)的代碼基礎(chǔ)上,我們?cè)黾右粋€(gè)自定義顯示行數(shù)的功能。

user_list.html  這里下了一個(gè)JQuery的插件,這樣讀取設(shè)置cookie比較容易;而且,我們還限制了cookie的使用范圍,不是默認(rèn)的所有范圍,而是僅僅局限于/user_list這個(gè)路徑里面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  <style>
    .go{
      width:20px;
       border: solid 1px;
      color: #66512c;
      display: inline-block;
      padding: 5px;
    }
    .pagination .page{
      border: solid 1px;
      color: #66512c;
      display: inline-block;
      padding: 5px;
      background-color: papayawhip;
      margin: 5px;
    }
    .pagination .page.active{
      background-color: brown;
      color: white;
    }
  </style>
</head>
<body>
  <ul>
    {% for item in li %}
      {% include 'li.html' %}
    {% endfor %}
  </ul>
  <div>
    <select id="ps" onchange="changePageSize(this)">
      <option value="10">10</option>
      <option value="30">30</option>
      <option value="50">50</option>
      <option value="100">100</option>
    </select>
  </div>
  <div class="pagination">
    {{ page_str }}
  </div>
  <script src="/static/jquery-1.12.4.js"></script>
  <script src="/static/jquery.cookie.js"></script>
  <script>
    $(function(){
        var v = $.cookie('per_page_count', {'path': "/user_list/`"});
        console.log(v)
        $('#ps').val(v);
    });
    function changePageSize(ths){
      var v = $(ths).val();
      console.log(v);
      $.cookie('per_page_count',v, {'path': "/user_list/"});     
      location.reload();
    }
  </script>
</body>
</html>
【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

1、PbootCMS后臺(tái)正常使用,ueditor編輯界面可以顯示, 但單圖片上傳按鈕點(diǎn)擊沒(méi)反應(yīng),多圖片上傳顯示后臺(tái)配置項(xiàng)返回格式出錯(cuò),上傳功能將不能正常使用! 2、打開(kāi)瀏覽器調(diào)試模式,顯示
我們?cè)谟胮bootcms時(shí)候,需要對(duì)一些數(shù)據(jù)進(jìn)行統(tǒng)計(jì),要怎么操作呢?其實(shí)pbootcms有一個(gè)sql語(yǔ)句標(biāo)簽,通過(guò)這個(gè)標(biāo)簽就可以實(shí)現(xiàn)。使用方法如下: {pboot:sql sql=語(yǔ)句}[sql:字段]{/pboot:sql} 我們這里
使用pb時(shí)發(fā)現(xiàn)標(biāo)題這塊邏輯不太符合常用的效果,默認(rèn)的是后臺(tái)有站點(diǎn)標(biāo)題和副標(biāo)題,在前臺(tái)的展示方式是: 1、首頁(yè):站點(diǎn)標(biāo)題-副標(biāo)題 2、列表頁(yè):欄目標(biāo)題-站點(diǎn)標(biāo)題-副標(biāo)題 3、詳情
1、安裝前的準(zhǔn)備工作: 1、本地安裝(在自己電腦上安裝測(cè)試)可以用集成包,wampserver,phpstudy(現(xiàn)在的小皮),安裝后請(qǐng)確保PHP版本在php5.4以上。 2、虛擬主機(jī)安裝,請(qǐng)選擇支持php+
本篇文章給大家詳細(xì)介紹了PHP開(kāi)發(fā)接口使用RSA進(jìn)行加密解密方法,對(duì)此有興趣的朋友可以學(xué)習(xí)下。
這篇文章主要介紹了PHP長(zhǎng)連接實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php長(zhǎng)連接的概念、功能、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下
主站蜘蛛池模板: 五月天婷婷久久 | 高清成人av | 中文字幕一区二区三区四区五区 | 日本在线看片 | 色综合久久天天综合网 | 一区二区日韩精品 | 亚洲丝袜天堂 | 亚洲超碰在线观看 | 成人亚洲精品 | 国产精品久久久久无码av | japan25hdxxxx日本 做a的各种视频 | 欧美日韩a | 伊色综合久久之综合久久 | 国产成人精品久久 | 亚洲一区二区三区视频在线 | 久草新在线 | 黄色网址大全在线观看 | 色综网| 久精品视频 | 欧美日韩精品久久久免费观看 | 久久国产精品-国产精品 | 亚洲国产成人精品久久 | 欧美一区二区三区视频 | 九九久久精品视频 | 中文字幕在线看第二 | 高清国产一区二区 | 欧美性生交大片免费 | 天天影视网天天综合色在线播放 | 欧美精品v国产精品v日韩精品 | 国产精品久久国产精品 | 91在线免费视频 | 日本在线看片 | 一级日韩 | 精品一区二区三区在线播放 | av天天爽| 在线视频成人 | 午夜一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 毛片一级片 | 国产精品久久 | 国产精品久久一区二区三区 |