在Helicon Zoo的帮助下,我在IIS下运行了一个Django网站。它位于虚拟目录中(因此,它看起来像http://mysite.com/django
)。
在我的urls.py中,我的模式定义如下:
urlpatterns = patterns('',
....
url(r'^django/status/(?P<product>.*)/$',views.status),
....
)
但是,当我打开像http://mysite.com/django/status/some_product
这样的网址时
我收到404页面的消息:
Using the URLconf defined in urls, Django tried these URL patterns, in this order:
....
The current URL, status/some_product/, didn't match any of these.
正如您所看到的,URL中没有经过测试的django。当然,当我改变这样的模式时:
url(r'^status/(?P<product>.*)/$',views.status),
一切正常,但如果APPEND_SLASH
已启用(并且我已启用它并在settings.py中将其设置为False
但由于某些原因无效),我的请求如{{1}被重定向到http://mysite.com/django/status/some_product
。
所以,问题是: 如何配置Django以便它不会丢弃虚拟目录名?
关于如何转向APPEND_SLASH,我还有什么需要知道的吗?
现在我只是将http://mysite.com/status/some_product/
放在settings.py中,但没有区别。
注意:我对Django和Python几乎一无所知,但我无法改变该网站的设置方式(至少现在如此)。
答案 0 :(得分:1)
我注意到zoofcgi有两种操作模式
由于我的项目需要第二个(wsgi_app),我注意到只有通过设置变量django.root
才能解决问题。
也就是说,第二种模式的环境变量配置存在错误。所以我创建了解决这个bug的项目helicon-zoofcgi。
现在没有必要在django urls中输入网站前缀,zoofcgi模块已经在环境变量中解决了它。
我希望该项目对未来的某些人有用。
答案 1 :(得分:0)
最后,我发现它有什么问题。
出现所描述行为的原因是默认web.config文件提供的设置:
<add name="django.root" value="%APPL_VIRTUAL_PATH%" />
我删除后,一切正常。
Here是与应用于Apache的django.root
变量相关的一些信息。