Django在子目录中

时间:2016-10-04 14:52:59

标签: python django url

当我构建我的django应用程序时,我将使用runserver命令来测试我的网站,但在部署中,假设我将发布我的网站:www.test.com/django。

我的IIS在我的默认网站“django”下配置了一个应用程序。

我期待一切正常,但django无法识别我的网址架构,即以下内容:

urlpatterns = [
    # Examples:
    url(r'^$', app.views.home, name='home'),
    url(r'^contact$', app.views.contact, name='contact'),
    url(r'^about', app.views.about, name='about'),
]

在这种情况下,我需要像这样修改我的urlpatterns,以便通过www.test.com/django提供应用程序:

urlpatterns = [
    url(r'^(?i)django/', include([ #Application name
        # Examples:
        url(r'^$', app.views.home, name='home'),
        url(r'^contact$', app.views.contact, name='contact'),
        url(r'^about', app.views.about, name='about'),
    ])),
]

这是一个好方法吗?它工作正常,但我不确定这个解决方案的质量。

1 个答案:

答案 0 :(得分:0)

解决此问题的首选方法是让您的网络服务器传递SCRIPT_NAME wsgi变量。 Django会在构建url时自动使用此变量作为前缀,而无需更改url配置。我不熟悉IIS,所以我不能告诉你如何做到这一点。它的优势在于您的代码与WSGI应用程序的实际安装点完全无关,因为脚本名称传递给Django而不是在其设置中进行配置。

或者,您可以将FORCE_SCRIPT_NAME设置为/django/