首页 > django中到底要如何才能正确使用csrf机制

django中到底要如何才能正确使用csrf机制

每次要做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提交了,望大大们指点


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

【热门文章】
【热门文章】