如何正确的使用django-csrf
如何正确的使用django-csrf?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
orm表单使用csrf
a. 基本应用
form表单中添加
{% csrf_token %}
b. 全站禁用
# 'django.middleware.csrf.CsrfViewMiddleware',
c. 局部禁用
'django.middleware.csrf.CsrfViewMiddleware', fromdjango.views.decorators.csrfimportcsrf_exempt @csrf_exempt defcsrf1(request): ifrequest.method=='GET': returnrender(request,'csrf1.html') else: returnHttpResponse('ok')
d. 局部使用
#'django.middleware.csrf.CsrfViewMiddleware', fromdjango.views.decorators.csrfimportcsrf_exempt,csrf_protect @csrf_protect defcsrf1(request): ifrequest.method=='GET': returnrender(request,'csrf1.html') else: returnHttpResponse('ok')
ajax提交数据
Ajax提交数据时候,携带CSRF:
a. 放置在data中携带
<formmethod="POST"action="/csrf1.html"> {%csrf_token%} <inputid="user"type="text"name="user"/> <inputtype="submit"value="提交"/> <aonclick="submitForm();">Ajax提交</a> </form> <scriptsrc="/static/jquery-1.12.4.js"></script> <script> functionsubmitForm(){ varcsrf=$('input[name="csrfmiddlewaretoken"]').val(); varuser=$('#user').val(); $.ajax({ url:'/csrf1.html', type:'POST', data:{"user":user,'csrfmiddlewaretoken':csrf}, success:function(arg){ console.log(arg); } }) } </script>
b. 放在请求头中
<formmethod="POST"action="/csrf1.html"> {%csrf_token%} <inputid="user"type="text"name="user"/> <inputtype="submit"value="提交"/> <aonclick="submitForm();">Ajax提交</a> </form> <scriptsrc="/static/jquery-1.12.4.js"></script> <scriptsrc="/static/jquery.cookie.js"></script> <script> functionsubmitForm(){ vartoken=$.cookie('csrftoken'); varuser=$('#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}}:"Joel\nisaslug"=>"Joel<br>isaslug" {{value|striptags}}:"<b>Joel</b><button>is</button>a<span>slug</span>"=>"Joelisaslug".
看完上述内容,你们掌握如何正确的使用django-csrf的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
推荐阅读
-
浅析Django接口版本控制
浅析Django接口版本控制一、前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请...
-
Django+Celery实现定时任务的示例
Django+Celery实现定时任务的示例目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开...
-
Python(django中如何使用restful框架)
Python,django中如何使用restful框架在使用django进行前后台分离开发时通常会搭配django-res...
-
Django实现drf搜索过滤和排序过滤
Django实现drf搜索过滤和排序过滤前言当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。搜...
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
这篇文章主要介绍PythonDjango搭建文件下载服务器的实现shili,文中介绍的非常详细,具有一定的参考价值,感兴趣的小...
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django开发RESTful API怎么实现增删改查
小编给大家分享一下Django开发RESTfulAPI怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一...
-
Django如何显示可视化图表的实践
这篇文章主要介绍Django如何显示可视化图表的实践,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一实战1...
-
浅析Django接口版本控制
浅析Django接口版本控制一、前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请...
-
Django+Celery实现定时任务的示例
Django+Celery实现定时任务的示例目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开...
-
Python(django中如何使用restful框架)
Python,django中如何使用restful框架在使用django进行前后台分离开发时通常会搭配django-res...
-
Django实现drf搜索过滤和排序过滤
Django实现drf搜索过滤和排序过滤前言当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。搜...
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
这篇文章主要介绍PythonDjango搭建文件下载服务器的实现shili,文中介绍的非常详细,具有一定的参考价值,感兴趣的小...
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django开发RESTful API怎么实现增删改查
小编给大家分享一下Django开发RESTfulAPI怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一...
-
Django如何显示可视化图表的实践
这篇文章主要介绍Django如何显示可视化图表的实践,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一实战1...
-
浅析Django接口版本控制
浅析Django接口版本控制一、前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请...
-
Django+Celery实现定时任务的示例
Django+Celery实现定时任务的示例目录一、前言二、配置使用定义与触发任务扩展三、Django中使用定时任务二次开...
-
Python(django中如何使用restful框架)
Python,django中如何使用restful框架在使用django进行前后台分离开发时通常会搭配django-res...
-
Django实现drf搜索过滤和排序过滤
Django实现drf搜索过滤和排序过滤前言当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。搜...
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
这篇文章主要介绍PythonDjango搭建文件下载服务器的实现shili,文中介绍的非常详细,具有一定的参考价值,感兴趣的小...
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django开发RESTful API怎么实现增删改查
小编给大家分享一下Django开发RESTfulAPI怎么实现增删改查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一...
-
Django如何显示可视化图表的实践
这篇文章主要介绍Django如何显示可视化图表的实践,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一实战1...