有没有办法为Django flatpages(或multilingual-ng,flatpages +翻译)提供可逆的命名URL?
如果没有,是否有类似的应用程序可以为可通过管理员编辑的页面提供命名URL? (我宁愿避免使用任何庞然大物的CMSs。)
编辑:请参阅以下答案中的评论,以便进一步讨论和澄清问题。
答案 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)。
答案 2 :(得分:1)
建议的解决方案与模板中的URL硬编码基本相同吗?在href =“URL”中对网址进行硬编码与在{%url URL%}中进行硬编码有什么区别?
我认为更好的解决方案是:How can I get the reverse url for a Django Flatpages template,由bufh提出。
我认为实现这一目标的最佳方法是在FlatPage模型上添加额外的“名称”字段。