django 设置特定url 禁用csrf :免除csrf校验
出处:https://blog.csdn.net/qq_42486675/article/details/107356485
免除csrf校验
在django中默认启动csrf校验,当用户发起post请求时,必须携带csrf_token参数。如果不想使用csrf校验时,可以使用以下方式免除校验。以下方式都是在局部中使用,如果想全局禁用时,需要在settings文件中配置,这种方式不推荐使用。
一、函数免除csrf校验
from django.views.decorators.csrf import csrf_exempt# 免除csrf校验@csrf_exempt def users(request): uses_list = ["柚子", "西瓜"] return HttpResponse(json.dumps(uses_list))
二、对类免除csrf校验
# dispatch是类视图的根方法,通过dispatch进行反射找到其他请求 from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator class StudentsView(View): """student view""" @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): print("before") ret = super(StudentsView, self).dispatch(request, *args, **kwargs) print("after") return ret(request, *args, **kwargs) def get(self,*args,**kwargs): return HttpResponse("get") def post(self,*args,**kwargs): return HttpResponse("post") def put(self,*args,**kwargs): return HttpResponse("put") def delete(self,*args,**kwargs): return HttpResponse("delete")
2. 第二种方式 在视图类上添加装饰器 @method_decorator(csrf_exempt,name="dispatch")
省事~~
from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator @method_decorator(csrf_exempt,name="dispatch") class StudentsView(View): """student view""" def get(self,*args,**kwargs): return HttpResponse("get")
3. 第三种方式 重写dispatch方法 在方法上加装饰器 @csrf_exempt
from django.views.decorators.csrf import csrf_exempt class MyBaseView(object): @csrf_exempt def dispatch(self, request, *args, **kwargs): print("before") ret = super(MyBaseView, self).dispatch(request, *args, **kwargs) print("after") return ret
4. 第四种,在url中添加 使用装饰器函数作用
from django.views.decorators.csrf import csrf_exempt urlpatterns = [ path('teachers/', csrf_exempt(TeachersView.as_view()), name="teachers"), ]
posted on 2023-06-22 21:35 zhangmingda 阅读(317) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具