Django中关于“CSRF verification failed. Request aborted”的问题

  • A+
所属分类:Web前端
摘要

遇到该问题的情境:在Django中采用Ajax提交表单,涉及到跨域问题。解决措施:

遇到该问题的情境:在Django中采用Ajax提交表单,涉及到跨域问题。

Django中关于“CSRF verification failed. Request aborted”的问题

解决措施:

  1. 在html页面中的表单内添加如下代码:
{% csrf_token %} 
  1. 在视图函数所在的py文件中添加如下代码:
from django.views.decorators.csrf import csrf_exempt  # 如果是FBV,则在接收表单数据的视图函数上添加@csrf_exempt @csrf_exempt def func():     pass  # 如果是CBV,则在类上或者类方法上加方法装饰器 # 方法一如下,装饰器name参数指明要装饰的函数名称 @method_decorator(csrf_exempt, name="dispatch") class ClassView(View):       def post(self, request, *args, **kwargs):             pass  # 方法二如下,直接装饰dispatch方法 class ClassView(View):       @method_decorator(csrf_exempt)       def dispatch(self, request, *args, **kwargs):             return super(StudentsView, self).dispatch(request, *args, **kwargs)              def post(self, request, *args, **kwargs):             pass 

在Django中,可以使用 @csrf_exempt 注解来标识一个视图可以免除csrf验证。

该方法原文解释如下:
Mark a view function as being exempt from the CSRF view protection.