gpt4 book ai didi

python - 链接 Django Flatpages 的正确方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:53 26 4
gpt4 key购买 nike

我在服务器的子目录中安装了 Django 1.8.2。它配置了 mod_wsgi.py 和 Apache2 并且运行正常。

可在 https://example.com/django 下访问 Django 应用程序 一切都已配置并运行良好。

现在我想使用 Flatpages 并将它们链接到我的模板中。我这样做是这样的:

<a href="/my-flatpage/">Awesome!</a>

这适用于我本地计算机上的开发服务器。但是当我将其部署到我的服务器上时,单击链接会生成以下网址: https://example.com/my-flatpage/ 这很自然,因为这就是我在 a 标记中引用它的方式。

但是无论django是否存储在子目录中,我怎样才能正确地做到这一点呢?我不想对子目录 /django/ 进行硬编码,因为这只是一个测试服务器。一定有比这更好的解决方案。您能解释一下,我应该如何在模板中链接我的平面页面吗?我认为必须有一种方法来包含平面页面的正确路径,无论 Django 是存储在子目录中还是根目录中。

我尝试在urls.py中给它们命名,并对链接进行硬编码。但是测试服务器无法生成正确的链接(django 提供的本地开发网络服务器可以!)并且我认为将 url 写入我的应用程序两次并不是一个好的解决方案(首先在平面页面的定义中, urls.py 中的第二个)。通过指定的网址,我尝试链接到页面

<a href="{% url 'my-flatpage' %}">Awesome!</a>

在本地工作,但不在测试服务器上。

我为 Flatpages 启用了中间件:

MIDDLEWARE_CLASSES = (
...
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
...
)

我知道以 / 开头的链接指的是根。因此它会跳过它实际存储的子目录。即使 Django 安装在子目录中,我只是不知道如何建立正确的链接。

感谢您的帮助!

最佳答案

使用中间件时,没有好的解决方案。使用urls.py时,很简单:https://docs.djangoproject.com/en/dev/ref/contrib/flatpages/#using-the-urlconf

您可以使它们明确:

from django.contrib.flatpages import views

urlpatterns += [
url(r'^about-us/$', views.flatpage, {'url': '/about-us/'}, name='about'),
url(r'^license/$', views.flatpage, {'url': '/license/'}, name='license'),
]

或者只是 View :

from django.contrib.flatpages import views

# Your other patterns here
urlpatterns += [
url(r'^(?P<url>.*/)$', views.flatpage, name='flatpage'),
]

与如下网址组合:

<a href="{% url 'about' %}">About</a>
<a href="{% url 'about' %}">License</a>
<a href="{% url 'flatpage' url='/some_other_page/' %}">Some other page</a>

关于python - 链接 Django Flatpages 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com