4

有没有办法为 Django 平面页面(或多语言 ng,即平面页面 + 翻译)提供可逆的命名 URL?

如果没有,是否有类似的应用程序可以为可通过管理员编辑的页面命名 URL?(我宁愿避免使用任何庞然大物的 CMS。)

编辑:请参阅下面答案中的评论,以获取更多讨论和澄清问题。

4

3 回答 3

9

作为根 URLConf 中的最后一件事,把

(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'),

现在您可以使用{% url %}标签、视图名称flatpage和关键字参数url。您也可以reverse()在视图中使用该功能。

于 2010-11-10T04:31:09.233 回答
5

{% url %}模板标签适用于 URLconf,而平面页面处理不存在的 url

如果您真的想将平面页面反转为 URL,我猜您必须编写自己的 {% flatpage_url %} 标签,如下所示:

    @register.simple_tag
    def flatpage_url(self, name):
        return FlatPage.objects.get({param}=name).url

-- 其中{param}Fl​​atPage 模型字段之一

此外,您可以将{% url %}{% flatpageurl %}标签合并在一起,以便后者在未找到 FlatPage 的情况下回退到reverse () (并且 reverse() 是{% url %}使用的)。

编辑:

我不再接受任何赞成票,因为 James Bennet 的回答是这个问题的答案(我很惭愧我忽略了这种微不足道的解决方案) - 所以请赞成。

于 2010-11-08T12:37:24.337 回答
1

提议的解决方案不与在模板中硬编码 URL 基本相同吗?在 href="URL" 中对 URL 进行硬编码与在 {% url URL %} 中进行硬编码有什么区别?

我认为可以在以下位置找到更好的解决方案:如何获取 Django Flatpages 模板的反向 url,由 bufh 提出。

我认为实现这一点的最佳方法是在 FlatPage 模型上添加一个额外的“名称”字段。

于 2010-11-10T19:43:14.857 回答