当我构建我的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'),
])),
]
这是一个好方法吗?它工作正常,但我不确定这个解决方案的质量。
答案 0 :(得分:0)
解决此问题的首选方法是让您的网络服务器传递SCRIPT_NAME
wsgi变量。 Django会在构建url时自动使用此变量作为前缀,而无需更改url配置。我不熟悉IIS,所以我不能告诉你如何做到这一点。它的优势在于您的代码与WSGI应用程序的实际安装点完全无关,因为脚本名称传递给Django而不是在其设置中进行配置。
或者,您可以将FORCE_SCRIPT_NAME
设置为/django/
。