Uso django_comments como sistema de comentarios de mi sitio, pero cuando publico el comentario, me da un error 403. ¿Por qué?
Esta es mi configuración:
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",
)
Las otras formas funcionan bien. No "darán un error 403".
Respuestas
2 para la respuesta № 1Sus otros formularios funcionan porque ha deshabilitado el middleware CSRF. Esta es una mala idea, porque hace que su sitio web sea vulnerable a un ataque CSRF.
los post_comment
vista desde django_comments usa explícitamente el csrf_protect
decorador. Por lo tanto, debe incluir {% csrf_token %}
en la etiqueta de formulario en su plantilla para evitar errores CSRF.
Si todavía tiene problemas, entonces probablemente sea la vista. Como dicen los documentos, debe asegurarse de que la plantilla se representa con el request
objeto, de lo contrario el {% csrf_token %}
La etiqueta no funcionará.