【问题标题】:Django Admin Page broken linksDjango 管理页面断开的链接
【发布时间】:2013-10-28 22:09:29
【问题描述】:

我正在使用 uwsgi 部署一个 Django 应用程序。 该应用部署在SERVER_URL:PORT下。

使用代理服务器,也可以通过EXTERNAL_WEB_SITE/MY_APP_NAME访问该应用。

使用管理页面时,在:EXTERNAL_WEB_SITE/MY_APP_NAME/ADMIN/ 下,我可以看到正确的模型。但是,管理页面中指向模型本身的链接直接指向:EXTERNAL_WEB_SITE/ADMIN/MAIN_PACKAGE/SELECTED_MODEL/。也就是说 - MY_APP_NAME 不会传递提供的链接。 我想这是因为在服务器本身中部署的应用程序没有应用程序名称,只是在特定端口下。

为了解决这个问题,我尝试在settings.py 中定义FORCE_SCRIPT_NAME=MY_APP_NAME。这给了我很好的链接。但是 - 当尝试修改对象并将其保存时 - 在 EXTERNAL_WEB_SITE/MY_APP_NAME/ADMIN/MAIN_PACKAGE/SELECTED_MODEL/ITEM/ 下 - 在点击 Save 后我链接到 EXTERNAL_WEB_SITE/MY_APP_NAME/MY_APP_NAME/ADMIN/MAIN_PACKAGE/SELECTED_MODEL/ITEM/ - 也就是说 - 我得到 MY_APP_NAME 两次。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: python django django-admin uwsgi django-wsgi


    【解决方案1】:

    您需要在来自代理服务器的请求中传递SCRIPT_NAME env 变量

    或者,您可以让两个实例运行一个设置FORCE_SCRIPT_NAME 而第二个不设置

    uwsgi 有一个不错的选择,您可以在两个端口上部署您的应用程序,或者(甚至更好)根据标头或路径设置环境变量

    [uwsgi]
    route = ^(/MY_APP_NAME)/ addvar:SCRIPT_NAME=$1
    

    【讨论】: