如何正確的使用django-csrf?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
orm表單使用csrf
a. 基本應(yīng)用
form表單中添加
{% csrf_token %}
b. 全站禁用
# 'django.middleware.csrf.CsrfViewMiddleware',
c. 局部禁用
'django.middleware.csrf.CsrfViewMiddleware', from django.views.decorators.csrf import csrf_exempt @csrf_exempt def csrf1(request): if request.method == 'GET': return render(request,'csrf1.html') else: return HttpResponse('ok')
d. 局部使用
# 'django.middleware.csrf.CsrfViewMiddleware', from django.views.decorators.csrf import csrf_exempt,csrf_protect @csrf_protect def csrf1(request): if request.method == 'GET': return render(request,'csrf1.html') else: return HttpResponse('ok')
ajax提交數(shù)據(jù)
Ajax提交數(shù)據(jù)時候,攜帶CSRF:
a. 放置在data中攜帶
b. 放在請求頭中
補充知識:在django的form表單及ajax提交的數(shù)據(jù)中添加認證的csrfmiddlewaretoken
1. 對于ajax提交數(shù)據(jù),把下面的代碼加入到j(luò)s的頭部,可以保證ajax執(zhí)行時自動提交參數(shù)csrfmiddlewaretoken。
$.ajaxSetup({data: {csrfmiddlewaretoken: '{{ csrf_token }}' }});
2. 對于form表單提交數(shù)據(jù),在表單內(nèi)部加入{% csrf_token %}標(biāo)簽,會自動生成一個input標(biāo)簽
得到
或者使用js添加:
$("#csrf_token").replaceWith("{% csrf_token %}");
3. 另外記錄一下使用模板過濾器處理form.field的方法
$("#{{ field.name }}").replaceWith('{{ field|linebreaksbr }}'); $(".{{ field.name }}").text('{{ field.errors|striptags }}'); {{ value|linebreaksbr }}: "Joel\nis a slug" => "Joel
is a slug" {{ value|striptags }}: "Joel a slug" => "Joel is a slug".
看完上述內(nèi)容,你們掌握如何正確的使用django-csrf的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!