django-csrf使用和禁用方式
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ù)時(shí)候,攜帶CSRF:
a. 放置在data中攜帶
<form method='POST' action='/csrf1.html'> {% csrf_token %} <input type='text' name='user' /> <input type='submit' value='提交'/> <a onclick='submitForm();'>Ajax提交</a></form><script src='https://rkxy.com.cn/static/jquery-1.12.4.js'></script><script> function submitForm(){ var csrf = $(’input[name='csrfmiddlewaretoken']’).val(); var user = $(’#user’).val(); $.ajax({ url: ’/csrf1.html’, type: ’POST’, data: { 'user':user,’csrfmiddlewaretoken’: csrf}, success:function(arg){console.log(arg); } }) }</script>
b. 放在請(qǐng)求頭中
<form method='POST' action='/csrf1.html'> {% csrf_token %} <input type='text' name='user' /> <input type='submit' value='提交'/> <a onclick='submitForm();'>Ajax提交</a></form><script src='https://rkxy.com.cn/static/jquery-1.12.4.js'></script><script src='https://rkxy.com.cn/static/jquery.cookie.js'></script><script> function submitForm(){ var token = $.cookie(’csrftoken’); var user = $(’#user’).val(); $.ajax({ url: ’/csrf1.html’, type: ’POST’, headers:{’X-CSRFToken’: token}, data: { 'user':user}, success:function(arg){console.log(arg); } }) }</script>
補(bǔ)充知識(shí):在django的form表單及ajax提交的數(shù)據(jù)中添加認(rèn)證的csrfmiddlewaretoken
1. 對(duì)于ajax提交數(shù)據(jù),把下面的代碼加入到j(luò)s的頭部,可以保證ajax執(zhí)行時(shí)自動(dòng)提交參數(shù)csrfmiddlewaretoken。
$.ajaxSetup({data: {csrfmiddlewaretoken: ’{{ csrf_token }}’ }});
2. 對(duì)于form表單提交數(shù)據(jù),在表單內(nèi)部加入{% csrf_token %}標(biāo)簽,會(huì)自動(dòng)生成一個(gè)input標(biāo)簽
<form>{% csrf_token %}</form>
得到
<form><input name='csrfmiddlewaretoken' value='...' type='hidden'></form>
或者使用js添加:
$('#csrf_token').replaceWith('{% csrf_token %}');
3. 另外記錄一下使用模板過濾器處理form.field的方法
$('#{{ field.name }}').replaceWith(’{{ field|linebreaksbr }}’);$('.{{ field.name }}').text(’{{ field.errors|striptags }}’);{{ value|linebreaksbr }}: 'Joelnis a slug' => 'Joel<br>is a slug'{{ value|striptags }}: '<b>Joel</b> <button>is</button> a <span>slug</span>' => 'Joel is a slug'.
以上這篇django-csrf使用和禁用方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. PHP設(shè)計(jì)模式中工廠模式深入詳解2. asp中response.write("中文")或者js中文亂碼問題3. jsp網(wǎng)頁(yè)實(shí)現(xiàn)貪吃蛇小游戲4. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向5. CSS hack用法案例詳解6. .Net Core和RabbitMQ限制循環(huán)消費(fèi)的方法7. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說(shuō)明8. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法9. ASP.NET MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息10. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)
