1

在 Helicon Zoo 的帮助下,我有一个在 IIS 下运行的 Django 网站。它位于虚拟目录中(因此,它的 url 看起来像http://mysite.com/django)。

在我的 urls.py 中,我有这样定义的模式:

urlpatterns = patterns('',
    ....        
    url(r'^django/status/(?P<product>.*)/$',views.status),
    .... 
)

但是,当我打开 url 时,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启用(并且我已启用它并将其设置为Falsesettings.py 出于某种原因没有帮助),我的请求http://mysite.com/django/status/some_product将被重定向到http://mysite.com/status/some_product/.

所以,问题是:如何配置 Django,使其不会抛出虚拟目录名称?

关于如何打开 APPEND_SLASH,我有什么需要了解的吗?现在我只是简单地放入APPEND_SLASH = Falsesettings.py,但没有区别。

注意:我对 Django 和 Python 几乎一无所知,我无法更改该网站的设置方式(至少现在是这样)。

4

2 回答 2

1

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

使用 django_settings_module

或使用 wsgi_app

由于我的项目需要第二个(wsgi_app),我注意到问题并没有仅仅通过设置变量来解决django.root

也就是第二种模式的环境变量配置有bug。所以我创建了解决这个错误的项目helicon-zoofcgi 。

现在不需要在 django urls 中输入站点前缀,zoofcgi 模块已经在环境变量中解决了它。

我希望该项目将来对某人有用。

于 2016-03-07T14:44:07.470 回答
0

最后,我发现了它的问题所在。

似乎描述行为的原因是默认 web.config 文件提供的设置:

<add name="django.root" value="%APPL_VIRTUAL_PATH%" />          

在我删除它之后,一切都开始正常工作了。

是一些与django.root应用于 Apache 的变量相关的信息。

于 2013-11-15T12:16:48.393 回答