我使用django_comments作为我网站的评论系统,但是当我发布评论时,它会给出403错误。为什么呢?
这是我的设置:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
其他形式效果很好。他们不会给403错误。
答案 0 :(得分:2)
您的其他表单有效,因为您已禁用CSRF中间件。这是一个坏主意,因为它会使您的网站容易受到CSRF攻击。
django_comments的post_comment
视图明确使用了csrf_protect
装饰器。因此,您必须在模板中的表单标记中包含{% csrf_token %}
,以防止出现CSRF错误。
如果你还有问题,那么可能就是观点。 As the docs say,您必须确保使用request
对象呈现模板,否则{% csrf_token %}
标记将无效。