我真的不知道如何解释我的问题。 我想做的是以下内容。
我的管理员将我的 Django 服务器地址 192.168.2.1:8001 链接到一个网址:devel.genesilico.pl/modomics 以公开该网站,否则只能在我们的本地网络上看到。
如果我访问该地址,我会看到没有静态文件的站点主页,如果我尝试访问另一个页面,该地址将更改为:
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'),
]
最佳答案
看来您需要将应用程序配置为在子文件夹上运行。
发生的事情是 reverse
函数正在生成根目录 /
的相对 URL,而不是 /modomics
,因为您的服务器是'意识到它的托管方式不同。
有两种方法可以解决这个问题:
在settings.py中,你可以设置
FORCE_SCRIPT_NAME
='/modomics'
以正确生成 URL,或者让您的管理员将
/modomics
作为标题X-Script-Name
的值传递并在wsgi.py
中处理它> - see this related answer
第一个解决方案的缺点是您需要使用 one of the settings file patterns for deployment 确保您的网站配置为在开发和生产中以不同方式运行,如果子文件夹发生变化,您需要与管理员协调。
关于子路径的 Django 错误 url 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50038009/