0

正如您可以阅读django 参考资料或稍微修改一下,get_flatpages可以按如下方式使用:

{% get_flatpages as flatpages %}
{% get_flatpages for someuser as flatpages %}
{% get_flatpages '/about/' as about_pages %}
{% get_flatpages prefix as about_pages %}
{% get_flatpages '/about/' for someuser as about_pages %}

所以,如果我想获得一个特定的页面,我需要通过它的 url 或前缀来完成,这有点粗糙,因为我的模板代码变得依赖于数据,我的意思是,如果我更改某个平面页面的 url,那么它是也有必要更改我的模板代码。

一个更灵活的想法是为每个页面添加一个标识符,可以通过例如“高级选项”部分添加,以便可以通过其标识符引用该页面,因此我们可以执行以下操作:

{% get_flatpages 'about' as about_pages %}

哪个更灵活,数据依赖更少,无论页面有什么 url,注意我们可以在不更改模板代码的情况下更改页面的 url。

框架中有类似的东西吗?当然我可以自定义这个应用程序或使用第三方应用程序,但这不是重点;-)

你还有其他想法要处理吗?

4

1 回答 1

1

不,我不相信目前您在 Django 中要求的内容有任何支持。您链接到平面页面的文档说:

平面页面是具有 URL、标题和内容的简单对象。将它用于一次性的特殊情况页面,例如“关于”或“隐私政策”页面,您希望将其存储在数据库中,但您不想为其开发自定义 Django 应用程序。

我对此的解读是“这是我们提供的最低限度,如果你想要更多,你必须自己编写代码”。我同意您允许通过符号名称(可能默认为其 URL)引用页面的建议更灵活,但您最好提出问题或在邮件列表中讨论而不是希望开发人员发生在您在 StackOverflow 上的问题上。

在短期内,您可以查看一些预先构建的类似 CMS 的 Django 应用程序。Django-page-cms相对轻量级(它本身是一个相对较小的应用程序,但确实有一堆依赖项),你可以完成你所追求的:每个页面都由它的 slug(又名 url / 名称)引用,但是你可以为任意 URL 定义别名/重定向到给定页面。

于 2013-01-04T02:29:40.597 回答