Django错误的子路径的url模式

时间:2018-04-26 08:13:05

标签: django url django-urls url-scheme

我真的不知道如何解释我的问题。 我想要做的是以下几点。

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

如果我访问该地址,我会看到没有静态文件的网站主页,如果我尝试访问其他网页,则地址会更改为:

devel.genesilico.pl/modifications

因此删除了modomics前缀路径,找不到页面。

我认为更改我的URLs.py在所有这些内容中添加modomics将解决此问题,但不是。在这一点上,Django的DEBUG向我展示了这个(照片附上)。在这种情况下,前缀" modomics"被删除了。

我不知道该怎么做。我不知道这个问题是由Django提供的,还是由我的管理员给我的网址设置。

enter image description here

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

这是我的主要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')),]

这里是app修改的urls.py:

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

1 个答案:

答案 0 :(得分:1)

您似乎需要将应用程序配置为在子文件夹上运行。

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

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

  1. 在settings.py中,您可以设置FORCE_SCRIPT_NAME = '/modomics'以获取正确生成的网址,或

  2. 让您的管理员将/modomics作为标题X-Script-Name的值并在wsgi.py - see this related answer

  3. 中进行处理

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