在使用Django提交Post表单时遇到如下错误:
Forbidden (403)
CSRF verification failed. Request aborted.
以下是网上给出的资料:
原因在"帮助"中已经写的很清楚了。
一般而言,这可以发生时,有一个真正的跨站请求伪造,或当Django的CSRF的机制还没有正确使用。 对于POST表单,您需要确保:
*该视图功能使用模板RequestContext的。
*在模板中,有{%csrf_token%}(模板网址标记在每个邮局形式的内部目标。
*如果您不使用CsrfViewMiddleware,那么你必须在view中使用csrf_protect,
您看到此页面的帮助部分,因为你在settings中设置了 DEBUG = True。 改变这种状况为False,只有最初的错误信息会被显示。您可以使用CSRF_FAILURE_VIEW设置自定义此页面。
所以,解决方法:
1、在表单Form里加上{% csrf_token %}
2、在Settings里的MIDDLEWARE_CLASSES增加配置:(一般默认就有)
'django.middleware.csrf.CsrfViewMiddleware',
#'django.middleware.csrf.CsrfResponseMiddleware',
1.2.X示例:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
3、在view中的方法上面加上@csrf_protect注解。同时使用RequestContext代替Context。示例:
-----------------------------------------------------------------
@csrf_protect
def login(request):
...
return
render_to_response('index.html',context_instance=RequestContext(request))
实际我做的修改就是红色字体部分,我是刚开始学习Django,有许多不明白的地方,这个只是作为一个记录,以后有待更新。
相关推荐
- **解决方案**:更新`settings.py`中的`MIDDLEWARE_CLASSES`列表,用`'django.middleware.csrf.CsrfViewMiddleware'`替换旧的中间件名称,并在模板中的表单内加入`{% csrf_token %}`标签。 ```python ...
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
在使用Django框架开发Web应用时,可能会遇到一个常见的问题,即在尝试通过POST方法提交表单时,收到“Forbidden (403) CSRF verification failed. Request aborted.”的错误。这个错误是由于Django的跨站请求伪造...
在前后端分离的Web开发模式下,Django的CSRF(Cross Site Request Forgery,跨站请求伪造)保护机制可能会引发问题,因为它主要是为传统的基于表单的提交设计的。然而,现代应用往往使用Ajax进行异步通信,这就需要...
Django框架提供了一个内置的中间件`django.middleware.csrf.CsrfViewMiddleware`来帮助开发者防范这种攻击。 **一、Django后台处理** 1. **启用CSRF保护中间件**: 在Django项目的`settings.py`文件中,你需要...
第22周-第11章节-Python3.5-Django之CSRF原理详解2.avi
第22周-第10章节-Python3.5-Django之CSRF原理详解1.avi
PythonDjango开发实战-ppt课件.pptx
django项目django项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue...
基于Django开发的电影资源网站.zip
810086 Django开发从入门到实践.pdf
资源分类:Python库 所属语言:Python 资源全名:django-oauth2-1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
基于python和Django开发的小说网站项目源码.zip 代码完整下载可用。 基于python和Django开发的小说网站项目源码.zip 代码完整下载可用。基于python和Django开发的小说网站项目源码.zip 代码完整下载可用。基于...
在本资源"django+vue分离项目实战.rar"中,我们将探讨如何使用现代Web开发技术Django和Vue.js来实现一个完整的前后端分离的实战项目。这个项目需要的基础环境包括Python 3.6及以上版本、Django的最新版、Node.js的...
《Django Web开发指南》是一本深入探讨使用Python的Django框架进行Web应用开发的教程。Django,作为Python中最受欢迎的Web框架之一,以其高效、安全和可扩展的特性吸引了大量的开发者。这本书旨在帮助初学者和有经验...
基于Django的自助超市...析及可视化系统的开发与实现_陈曦.caj
对于自定义表单Post方式提交往往会带来由CSRF(跨站请求伪造)产生的错误“CSRF verification failed. Request aborted.” 本篇文章主要针对”表单提交”和”Ajax提交”两种方式来解决CSRF带来的错误 一、表单提交 ...
Django是Python编程语言中最受欢迎的Web开发框架之一,它以其高效、易用和功能强大而闻名。"Django-1.2.5.tar.gz" 是一个包含Django 1.2.5版本源代码的压缩文件,使用的是常见的归档格式tar与gzip的组合。在本文中,...
目录网盘文件永久链接 ...18.Python3.5 DjangoWeb开发框架 19.Python3.5 Django的ORM映射机制 20.Python3.5 Django数据库实战 21.Python3.5 Django分页与Cookie 22.Python3.5 Django会话与表单验证 23.......