子路径的 Django 错误 url 模式

标签 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')),]

这里是应用修改的 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,因为您的服务器是'意识到它的托管方式不同。

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

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

  2. 让您的管理员将 /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/

相关文章:

python - 正确获取型号ID

python - MySQL 客户端、Django

c# - MVC .NET 中的 URL 参数编码

javascript - document.location 或 window.location.href 在条件的 if 部分不起作用,但在 else 部分起作用

c# - HttpUtility.UrlEncode - 减号而不是加号?

python - 在 Django 中,有没有办法使用 Flask 风格的路由语法来定义路由?

python - Django 日志记录 "No handlers could be found for logger"

django - 如何创建一个 BytesIO img 并传递给模板

python - Django:更改图像大小并上传到 S3

django-registration View 自定义