python - django中到底要如何才能正确使用csrf机制
天蓬老师
天蓬老师 2017-04-17 11:39:30
[Python讨论组]

每次要做csrf保护总是会出现如下的问题,然后弄半天又自己好了

但是弄完之后还是一团米糊,下次又不知道怎么弄了

1 settings.py中在middleware中要有'django.middleware.csrf.CsrfViewMiddleware'这个中间件加上了

2 然后在html的表单中也加了{% csrf_token %}

3 然后在视图函数中也加入了装饰器@csrf_protect

4 在跳转模版的时候也加上了context_instance=RequestContext(request) 可是依然会出现上图中的错误

真心希望大神指点一下 上面那些东西哪些是必须的 哪些是不需要的

我看django中auth模块的源码中基本每个视图函数前都加了@csrf_protect这个装饰器,然后我在表单中一开始加了{% csrf_token %} 一开始会出现上图的错误,后来什么也没改又可以post提交了,望大大们指点

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
ringa_lee

django建议使用django.middleware.csrf.CsrfViewMiddleware进行全局控制,不提倡使用@csrf_protect进行单view控制,因为这样可能会有遗漏。如果不想进行csrf保护的view可以加上@csrf_exempt。 官方文档有三个步骤,楼主应该是第三步没弄对:把django.core.context_processors.csrf加到配置文件的 TEMPLATE_CONTEXT_PROCESSORS,或者手动生成csrftoken并加到template context。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号