0

我正在编写一个 django 服务器。发生了一个非常奇怪的情况——当我尝试测试它时,我POST访问了其中一个 url,只有process_request中间件被命中,而process_view与该 url 对应的视图函数都没有被命中。该过程不知何故在中间停止,并将 aHTTP 403返回给客户端。另外,我在其他时间使用相同的url(和相同的视图功能)GET,并且过程顺利进行,没有报告错误。所有其他视图功能/网址都可以正常工作。

服务器有点大,所以我不会在这里全部展示;但是,我只有两个装扮的middlewares——process_request而且process_view,正如我所说,只有process_request它被称为;它不返回HttpResponseForbidden

这是安装的middlewares

'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'ttam_container.ttam.middlewares.authentication.Authentication'

以下是已安装的应用程序:

'django_concurrent_test_server',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'ttam_container.ttam',
'ttam_container.ui'

知道可能出什么问题吗?

4

1 回答 1

1

可能是因为您忘记在请求中包含 csrf 令牌。如果您使用 html 表单,请在其中包含 csrf_token 标记

<form ...
    {% csrf_token %}
    ...

如果您使用 ajax 请求 - 阅读文档如何使用 ajax 和 csrf 保护https://docs.djangoproject.com/en/1.5/ref/contrib/csrf/

于 2013-04-30T05:27:10.887 回答