为什么Dajaxice会出现'403(Forbidden)'错误?

时间:2013-12-30 13:45:45

标签: django dajaxice

我刚刚安装了Dajaxice,但我一直有这个错误:

POST https://.../communication.isUserLogged/ 403 (Forbidden) dajaxice.core.js:163
Dajaxice: Something went wrong. 

在服务器端:

"POST /dajaxice/communication.isUserLogged/ HTTP/1.1" 403 2282

我猜服务器没有获得正确的CSRF令牌,但我不知道如何解决问题。

Dajaxice文档说

  

确保TEMPLATE_CONTEXT_PROCESSORS具有django.core.context_processors.request。

但是it is set by default in Django 1.5。 我仍然收到这个警告:

  

'request'对象必须在上下文中可访问。您必须将'django.contrib.messages.context_processors.request'添加到TEMPLATE_CONTEXT_PROCESSORS并使用RequestContext呈现您的视图。

这是我的代码:https://c9.io/arthursw/brain

1 个答案:

答案 0 :(得分:2)

根据Django's API(另请参阅heredjango.core.context_processors.request默认情况下未设置:

  

默认情况下,TEMPLATE_CONTEXT_PROCESSORS设置为:

("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")
  

除此之外,RequestContext始终使用django.core.context_processors.csrf。

讨论后......

然后,在最后,您只需在设置文件的末尾添加以下行:

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( 'django.core.context_processors.request', )