子路径的 Django 错误 url 模式

Django wrong url pattern for subpath

我真的不知道如何解释好我的问题。 我想做的是以下内容。

我的管理员将我的 Django 服务器地址 192.168.2.1:8001 链接到一个网址:devel.genesilico.pl/modomics 使 public 这个网站只能在我们的网站上看到本地网络。

如果我访问该地址,我会看到我网站的主页没有静态文件,如果我尝试访问另一个页面,该地址将更改为:

devel.genesilico.pl/modifications

所以删除了modomics前缀路径,它找不到该页面。

我认为改变我的 URLs.py 在他们面前添加 modomics 会解决这个问题,但没有。在这一点上,Django 的 DEBUG 向我展示了这个(附照片)。在这种情况下,前缀 "modomics" 也被删除了。

我不知道该怎么办。我不知道这个问题是 Django 引起的还是我的管理员给我的网址设置引起的。

请注意,我只是针对应用修改进行测试。

这里是我的主要urls.py:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('core.urls')),
    url(r'^', include('modifications.urls')),
    url(r'^', include('sequences.urls')),
    url(r'^', include('pathways.urls')),]

此处 urls.py 用于应用修改:

urlpatterns = [
    url(r'^modomics/modifications$', views.modlist, name='modlist'),
    url(r'^modomics/modifications/(?P<mod_name>.+)/$', views.moddescription, name='moddescription'),
]

您似乎需要在 sub-folder 上将您的应用程序配置为 运行。

发生的事情是 reverse 函数正在生成根目录 / 的相对 URL,而不是 /modomics,因为您的服务器不知道它的托管方式不同。

有两种方法可以解决这个问题:

  1. 在settings.py中,您可以设置FORCE_SCRIPT_NAME = '/modomics'来正确生成URL,或者

  2. 让您的管理员将 /modomics 作为 header X-Script-Name 的值传递并在 wsgi.py - see this related answer[ 中处理它=21=]

第一个解决方案的缺点是您需要确保您的网站配置为 运行 在开发和生产中使用 one of the settings file patterns for deployment 不同,并且您需要与管理员协调如果子文件夹发生变化。