Django flatpages(或multilingual-ng)的可逆名称URL?

时间:2010-09-21 11:43:15

标签: django multilingual django-flatpages

有没有办法为Django flatpages(或multilingual-ng,flatpages +翻译)提供可逆的命名URL?

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

编辑:请参阅以下答案中的评论,以便进一步讨论和澄清问题。

3 个答案:

答案 0 :(得分:9)

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

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

现在,您可以使用{% url %}标记,其中包含视图名称flatpage和关键字参数url。您还可以在视图中使用reverse()功能。

答案 1 :(得分:4)

{%url%} 模板标记适用于URLconf,而flatpages适用于handling nonexistent urls

如果你真的想将flatpages转换为URL,我猜你必须编写自己的{%flatpage_url%}标签,如下所示:

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

- 其中 {param} FlatPage model fields之一。

此外,您可以将 {%url%} {%flatpageurl%} 标记合并在一起,以便后者在FlatPage的情况下回退到reverse()找不到(而reverse()就是{% url %} uses)。

编辑:

我不接受任何更多的赞成,因为詹姆斯班纳特的回答是The One for this question(我很惭愧,我忽略了这样简单的解决方案) - 所以请upvote它。

答案 2 :(得分:1)

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

我认为更好的解决方案是:How can I get the reverse url for a Django Flatpages template,由bufh提出。

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