在django中利用comments功能,发生错误,错误信息如下:
务必将 Context修改为RequestContext,修改后为 c = RequestContext(request,{'posts':posts})
Forbidden
(403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF token missing or incorrect.In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
- Your browser is accepting cookies.
- The view function uses RequestContext for the template, instead of Context.
- In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
- If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.
解决方法:
1.其实也没有什么解决方法,其实在错误信息里边已经说了,“
The view function uses
RequestContext
for the template, instead of
Context”
通常情况下,我们在view里边通常是这么做:
点击(此处)折叠或打开
- def archive(request,text_id):
- all_posts = TextBody.objects.all()
- posts = all_posts.filter(id=text_id)
- t= loader.get_template('content.html')
- c = Context({'posts':posts})
- return HttpResponse( t.render(c) )
务必在文件头引入: from django.template import loader,Context,RequestContext
2.在Html模板中加入csrf标签:
原文:http://blog.chinaunix.net/uid-21222282-id-3244532.html
点击(此处)折叠或打开
- <table>
- <form action="{% comment_form_target %}" method="post">
- {% csrf_token %}
- {{ form }}
- <tr>
- <td colspan="2">
- <input type="submit" name="submit" value="Post">
- <input type="submit" name="preview" value="Preview">
- </td>
- </tr>
- </form>
- </table>
本文介绍了在使用Django的comments功能时遇到的CSRF验证失败问题,并提供了详细的解决步骤,包括如何正确使用RequestContext以及在HTML模板中添加csrf标签。
944

被折叠的 条评论
为什么被折叠?



