IIS下的Django(带HeliconZoo)在虚拟目录中 - urls解析器使用没有目录名的路径

时间:2013-07-24 14:51:27

标签: django iis url-routing heliconzoo

在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几乎一无所知,但我无法改变该网站的设置方式(至少现在如此)。

2 个答案:

答案 0 :(得分:1)

我注意到zoofcgi有两种操作模式

with django_settings_module

or with wsgi_app

由于我的项目需要第二个(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变量相关的一些信息。