91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python后臺開發Django會話控制的實現

發布時間:2020-09-06 01:54:22 來源:腳本之家 閱讀:157 作者:東小東 欄目:開發技術

頁面跳轉

頁面跳轉的url中必須在最后會自動添加【\】,所以在urls.py的路由表中需要對應添加【\】

from django.shortcuts import redirect #導入
return redirect("admin/") #本地頁面跳轉
return redirect("https://www.cnblogs.com/dongxiaodong/") #其他網站跳轉

本地跳轉需要參考urls.py的路由表

urlpatterns = [
  path('admin/', admin.site.urls),
  path("dong/",views.homex),#添加URL對應關系
]

Cookie

設置 cookie

# 本地頁面跳轉
from django.shortcuts import redirect # 導入
retx = redirect("dong/")
# 返回文件,并匹配值
from django.shortcuts import render #導入
retx= render(requestx, "loginx.html",{"dongkk1":"替換值1","dongkk2":"替換值2"}) 
#返回字符串
from django.shortcuts import HttpResponse
retx=HttpResponse("東小東【dongxiaodong】")
#設置cookie
retx.set_cookie("dname", "dongxiaodong")
retx.set_cookie("dname2", "dongxiaodongxx",max_age=100)#設置超時時間,單位為秒

return retx

獲取cookie

dnamex=requestx.COOKIES.get("dname")

刪除

設置cookie的超時時間為過去時間即可

Cookie加密

retx.set_signed_cookie("dong3","dongxiaodong33",salt="任意字符串(密文)") #cookie通過密文加密
dnamex3 = requestx.get_signed_cookie("dong3", salt="對應設置cookie時的密文") # 獲取cookie

Session

依賴于cookie的sessionid的隨機字符串,默認超時時間為瀏覽器不退出情況下的兩周或者瀏覽器退出就立即失效

設置

requestx.session["dongss"]="dongxiaodongsss"
requestx.session.set_expiry(60*60)#設置超時時間,單位為秒

獲取

dnamex = requestx.session["dongss"]
dnamex = requestx.session.get("dongss")#無該鍵時程序不會報錯
ssid = requestx.session.session_key #得到sessionid,值與cookie保存的相同

刪除

del requestx.session["dongss"]
requestx.session.clear() #清空所有session

相關配置(setting.py)

SESSION_COOKIE_NAME="sessionid"     # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認)
SESSION_COOKIE_PATH="/"         # Session的cookie保存的路徑(默認)
SESSION_COOKIE_DOMAIN = None       # Session的cookie保存的域名(默認)
SESSION_COOKIE_SECURE = False      # 是否Https傳輸cookie(默認)
SESSION_COOKIE_HTTPONLY = True      # 是否Session的cookie只支持http傳輸(默認)
SESSION_COOKIE_AGE = 1209600       # Session的cookie失效日期(2周)(默認)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False  # 是否關閉瀏覽器使得Session過期(默認)
# 是否每次請求都保存Session,默認修改之后才保存(默認)
#如果SESSION_SAVE_EVERY_REQUEST = True時,可以配合requestx.session.set_expiry(60*60),實現無操作一分鐘后頁面session清除,頁面失效
SESSION_SAVE_EVERY_REQUEST = False

中間件

所有的請求都會先進入中間件處理,執行完所有中間件(MIDDLEWARE = [ ])才會進入urls.py進行路由,然后進入對應的APP的views.py中執行邏輯處理,中間件可以獲取到請求的任意數據,可以做一些IP黑名單等處理

CSR保護

Post提交數據時,Django自動會進行CSR驗證,在POST提交數據端需要提交一條隨機字符串,服務器會匹配其的內容

設置是否需要全局csr保護

全局設置:

需要在setting.py設置MIDDLEWARE = [ ],

如果注釋【'django.middleware.csrf.CsrfViewMiddleware',】則表示不用驗證,反之

部分設置(優先級高):

在APP對應views.py下添加函數裝飾器即可實現

from django.views.decorators.csrf import csrf_exempt,csrf_protect
@csrf_protect #強制添加保護
def xx1(requestx):
  pass
@csrf_exempt  #強制取消保護
def xx2(requestx):
  pass

Form表單里的post請求:

<form action="" method="post">
  {% csrf_token %}
  <input type="text" name="xx">
  <input type="submit" value="提交了">
</form>

Ajax里的post請求,需要獲取cookie的csrf值,并以請求頭的方式發送到服務器

headers:{"X-CSRFtoken":$.cookie("csrftoken")},

添加中間件

在工程下建立任意名字的文件夾,然后在文件夾中建立任意名字的python文件,如在工程同名目錄下建立ruledong.py文件:

from django.utils.deprecation import MiddlewareMixin
#自定義中間件1
class Dong1(MiddlewareMixin):
  def process_request(self,requestx):
    print("dong1111111")
    print("你的設備基本信息:", requestx.environ.get("HTTP_USER_AGENT", "w"))
    print("你的IP地址:", requestx.environ.get("REMOTE_ADDR", "w"))
#自定義中間件2
class Dong2(MiddlewareMixin):
  def process_request(self,requestx):
    print("dong22222222")
    if requestx.GET.get("idx") != "4":
      # 返回字符串,以此為終點,中斷所有
      from django.shortcuts import HttpResponse
      return HttpResponse("東小東【請求失敗】")

在setting的MIDDLEWARE = [ ]的最后添加,添加規則為前面的先被執行

'dongjg.ruledong.Dong1',
'dongjg.ruledong.Dong2',

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤峰县| 惠来县| 延津县| 桓仁| 鄢陵县| 扶绥县| 怀化市| 富阳市| 武强县| 馆陶县| 昌都县| 额敏县| 诏安县| 威远县| 晋中市| 河源市| 昭通市| 大同县| 德清县| 莲花县| 修武县| 抚州市| 阿坝县| 蓬安县| 沐川县| 苍梧县| 桐庐县| 山阳县| 林周县| 汝阳县| 诸暨市| 文安县| 潞西市| 云梦县| 高淳县| 大关县| 法库县| 安多县| 余姚市| 云南省| 巴林左旗|