时间:2021-05-22
如果是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>可以设置一个全局的设置,然后在$(function){
}中执行函数
$(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默认是全局都生效的,但是如果我们有需求,比如全局生效,但是我某个函数不需要使用csrf该怎么办;或者我的全局不设置csrf,但是对某个视图函数需要采用csrf,该怎么办
这里就需要导入2个模块
from django.views.decorators.csrf import csrf_exemptfrom django.views.decorators.csrf import csrf_protect然后在视图函数中使用使用装饰器来装饰视图函数
下面的例子就是起到全局启动csrf,但是我这个函数不启动csrf
@csrf_exemptdef 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,但是我这个函数不启动csrf
@csrf_protectdef 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")以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Django中的csrf认证实现的原理调用process_view方法检查视图是否被@csrf_exempt(免除csrf认证)-去请求体或cookie中获取t
我使用的是jQuery的ajax与django进行数据交互,遇到的问题是django的csrf传输数据的方法如下:$(function(){$.ajax({ur
jquery框架中提供了$.ajax、$.get、$.post方法,用于进行异步交互,由于Django中默认使用CSRF约束,推荐使用$.get示例:实现省市区
需求一般Django开发为了保障避免csrf的攻击,如果使用Django的模板渲染页面,那么则可以在请求中渲染设置一个csrftoken的cookie数据,但是
django程序,需要写很多api,每个函数都需要几个装饰器,例如复制代码代码如下:@csrf_exempt@require_POSTdeffoo(reques