在POST时,Django Admin - FORCE_SCRIPT_NAME会在URL中附加两次

时间:2014-08-13 15:13:07

标签: django apache django-admin uwsgi

我已将Django部署到子目录(我无法完全控制服务器,因此无法更改其部署方式)。

我添加到我的设置中:

FORCE_SCRIPT_NAME = '/hub06'
STATIC_URL = FORCE_SCRIPT_NAME + '/static/'

现在,当我转到/admin/hub06时,它正常工作,我可以登录并浏览所有管理页面。只要我执行POST请求(添加新模型),网址就会损坏。

例如,在编辑/hub06/admin/myapp/car/1

当我提交表单时,它会重定向到/hub06/hub06/admin/myapp/car/

因此它会两次添加脚本名称。这仅适用于Django admin中的POST个请求。

2 个答案:

答案 0 :(得分:6)

这是linux主机吗?是运行apache,nginx?这完全取决于您的Web服务器的配置方式。

如果您确实必须有/hub06/之类的网址前缀,那么您需要更新settings.py中返回网址的所有设置,例如LOGIN_URLSTATIC_URL,{{1等等包含前缀。

我认为你不需要使用LOGIN_REDIRECT_URL。评论在FORCE_SCRIPT_NAME中更新并更新settings.py以添加以下内容,例如:

urls.py

让我知道你怎么走。

答案 1 :(得分:-2)

这是解决方案:

# NB - this setting is required to make the app work correctly when running
# via ProxyPass from Apache. Otherwise CSRF checks and some redirects will not
# work.
USE_X_FORWARDED_HOST = True