【发布时间】:2015-06-08 18:01:15
【问题描述】:
我在服务器的子目录中安装了 Django 1.8.2。它配置了 mod_wsgi.py 和一个 Apache2 并且运行正常。
可以在 https://example.com/django 下访问 Django 应用程序,并且一切都已配置并运行良好。
现在我想使用平面页面并将它们链接到我的模板中。我是这样做的:
<a href="/my-flatpage/">Awesome!</a>
这适用于我本地机器上的开发服务器。但是当我在我的服务器上部署它时,点击链接会产生这个 url:https://example.com/my-flatpage/ 这是很自然的,因为这是我在 a 标签中引用它的方式。
但是,无论 django 是否存储在子目录中,我怎样才能正确地做到这一点?我不想硬编码子目录 /django/,因为这只是一个测试服务器。一定有比这更好的解决方案。你能解释一下,我应该如何在我的模板中链接我的平面页面?我认为必须有一种方法可以包含平面页面的正确路径,无论 Django 是存储在子目录中还是根目录中。
我尝试在 urls.py 中为它们命名,并对链接进行硬编码。但是测试服务器无法生成正确的链接(django 提供的本地开发网络服务器做到了!),我认为将 url 两次写入我的应用程序不是一个好的解决方案(首先在平面页面的定义中, urls.py 中的第二个)。使用命名的网址,我尝试使用
链接到页面<a href="{% url 'my-flatpage' %}">Awesome!</a>
在本地工作,但不在测试服务器上。
我为平面页面启用了中间件:
MIDDLEWARE_CLASSES = (
...
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
...
)
我知道以 / 开头的链接指的是根。因此它会跳过实际存储它的子目录。即使 Django 安装在子目录中,我也不知道如何建立正确的链接。
感谢您的帮助!
【问题讨论】: