欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django的csrf實(shí)現(xiàn)過程詳解

 更新時(shí)間:2019年07月26日 14:40:05   作者:bainianminguo  
這篇文章主要介紹了django的csrf實(shí)現(xiàn)過程相加,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

如果是ajax提交,可以按照下面的方式處理

<script src="/static/jq/jquery-3.3.1.js"></script>
 <script src="/static/jq/jquery.cookie.js"></script>
 <script>
   $(function () {
     ajax_buttion()
   }) 
   function ajax_buttion() {
     $("#btn").bind("click",function () {
       $.ajax(
         {
           url:"/test/app1/",
           type:"post",
           data:{
             username:"root",
             pwd:"admin"
           },
           headers:{
             "X-CSRFToken":$.cookie("csrftoken")
           },
           sucess:function (data) {
             console.log(data)
 
           }
         } 
       ) 
     })
   }
 </script>

可以設(shè)置一個(gè)全局的設(shè)置,然后在$(function){

}中執(zhí)行函數(shù)

$(function () {
  ajax_buttion()
  $.ajaxSetup()
})

如果是form表單提交,則可以按照下面的方式處理

<form action="/test/app1/" method="post">
  {% csrf_token %}
  <input type="text" name="uname">
  <input type="submit" value="submit">
  <input type="button" value="ajax" id="btn">
</form>

然后返回使用render的方式返回

def test(request):
  # int("hahah")
  # print(settings.C)
  print("test------->views",time.time())
 
  print(request.method)
  print("_".center(100,"-"))
  print(request)
  # return HttpResponse("last_app1")
  return render(request,"test.html")

中間件里csrf默認(rèn)是全局都生效的,但是如果我們有需求,比如全局生效,但是我某個(gè)函數(shù)不需要使用csrf該怎么辦;或者我的全局不設(shè)置csrf,但是對某個(gè)視圖函數(shù)需要采用csrf,該怎么辦

這里就需要導(dǎo)入2個(gè)模塊

from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.csrf import csrf_protect

然后在視圖函數(shù)中使用使用裝飾器來裝飾視圖函數(shù)

下面的例子就是起到全局啟動(dòng)csrf,但是我這個(gè)函數(shù)不啟動(dòng)csrf

@csrf_exempt
def test(request):
  # int("hahah")
  # print(settings.C)
  print("test------->views",time.time())
 
  print(request.method)
  print("_".center(100,"-"))
  print(request)
  # return HttpResponse("last_app1")
  return render(request,"test.html")

下面的例子就是全局不啟用csrf,但是我這個(gè)函數(shù)不啟動(dòng)csrf

@csrf_protect
def test(request):
  # int("hahah")
  # print(settings.C)
  print("test------->views",time.time())
 
  print(request.method)
  print("_".center(100,"-"))
  print(request)
  # return HttpResponse("last_app1")
  return render(request,"test.html")

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論