有没有办法为 Django 平面页面(或多语言 ng,即平面页面 + 翻译)提供可逆的命名 URL?
如果没有,是否有类似的应用程序可以为可通过管理员编辑的页面命名 URL?(我宁愿避免使用任何庞然大物的 CMS。)
编辑:请参阅下面答案中的评论,以获取更多讨论和澄清问题。
有没有办法为 Django 平面页面(或多语言 ng,即平面页面 + 翻译)提供可逆的命名 URL?
如果没有,是否有类似的应用程序可以为可通过管理员编辑的页面命名 URL?(我宁愿避免使用任何庞然大物的 CMS。)
编辑:请参阅下面答案中的评论,以获取更多讨论和澄清问题。
作为根 URLConf 中的最后一件事,把
(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'),
现在您可以使用{% url %}
标签、视图名称flatpage
和关键字参数url
。您也可以reverse()
在视图中使用该功能。
{% url %}模板标签适用于 URLconf,而平面页面处理不存在的 url。
如果您真的想将平面页面反转为 URL,我猜您必须编写自己的 {% flatpage_url %} 标签,如下所示:
@register.simple_tag
def flatpage_url(self, name):
return FlatPage.objects.get({param}=name).url
-- 其中{param}是FlatPage 模型字段之一。
此外,您可以将{% url %}和{% flatpageurl %}标签合并在一起,以便后者在未找到 FlatPage 的情况下回退到reverse () (并且 reverse() 是{% url %}使用的)。
提议的解决方案不与在模板中硬编码 URL 基本相同吗?在 href="URL" 中对 URL 进行硬编码与在 {% url URL %} 中进行硬编码有什么区别?
我认为可以在以下位置找到更好的解决方案:如何获取 Django Flatpages 模板的反向 url,由 bufh 提出。
我认为实现这一点的最佳方法是在 FlatPage 模型上添加一个额外的“名称”字段。