在模板中使用特定的平面页面

djq*_*djq 7 python django django-templates django-1.7

我正在使用django flatpage,我想知道是否有一种在模板中加载一个特定平面的简洁方法.文档显示以下模式:

{% load flatpages %}

{% get_flatpages '/about/' as about_pages %}
{% get_flatpages about_prefix as about_pages %}
{% get_flatpages '/about/' for someuser as about_pages %}
Run Code Online (Sandbox Code Playgroud)

我只是想在模板中加载一个特定页面,基本上像使用include语句一样使用它(例如{% include 'homepage.html' %})

我使用的方法是这样的:

{% get_flatpages '/flat-homepage/' as flatpages %}
{{ flatpages.first.content|safe }}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但我认为这可能会有一种更简洁的方式.我正在标记内容,safe因为我想要应用html样式(再次,不确定是否有更好的方法来执行此操作)

Gwy*_*idD 2

默认情况下,有两种解决方案。

首先,在 url 中注册您的平面页面,如下所示:

from django.contrib.flatpages import views

urlpatterns = [
    url(r'^about-us/$', views.flatpage, {'url': '/about-us/'}, name='about'),
]
Run Code Online (Sandbox Code Playgroud)

这样,您就可以使用{% url %}标签访问它,就像普通视图一样。

第二种方式,如果您知道该页面的确切 url,则可以使用以下方式访问它的 url:

{% url 'django.contrib.flatpages.views.flatpage' url='url_to_flatpage_here' %}
Run Code Online (Sandbox Code Playgroud)

没有其他办法,因为所有的 Flatpages 都是通过 url 来标识的。