django-csrf使用和禁用方式
orm表单使用csrf
a. 基本应用
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提交数据
Ajax提交数据时候,携带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. 放在请求头中
<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>
补充知识:在django的form表单及ajax提交的数据中添加认证的csrfmiddlewaretoken
1. 对于ajax提交数据,把下面的代码加入到js的头部,可以保证ajax执行时自动提交参数csrfmiddlewaretoken。
$.ajaxSetup({data: {csrfmiddlewaretoken: ’{{ csrf_token }}’ }});
2. 对于form表单提交数据,在表单内部加入{% csrf_token %}标签,会自动生成一个input标签
<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使用和禁用方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。
相关文章:
1. ASP基础知识Command对象讲解2. python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例3. Android实现圆线按钮进度效果4. Spring Boot如何移除内嵌Tomcat,使用非web方式启动5. Java之InputStreamReader类的实现6. python字典的值可以修改吗7. python设置 matplotlib 正确显示中文的四种方式8. PHP实现表单处理方法详解9. 13个Pandas实用技巧,助你提高开发效率10. python 使用raw socket进行TCP SYN扫描实例

网公网安备