通过后台接口管理静态页面,不想单独写一个app。
安装
app:
django.contrib.sites
django.contrib.flatpages
url:
urlpatterns = [path('pages/', include('django.contrib.flatpages.urls')),]
中间件:
django.contrib.flatpages.middleware.FlatpageFallbackMiddleware
运行:
manage.py migrate
创建了 django_flatpage/django_flatpage_sites 两张表
配置
url 配置一般配置
urlpatterns += [
path('about-us/', views.flatpage, {'url': '/about-us/'}, name='about'),
path('license/', views.flatpage, {'url': '/license/'}, name='license'),]
之前写单页模板也要写视图,这样就不用了
增删改
通过 admin
通过 Python API
静态页面模板
在templates 文件夹下,创建 flatpages/default.html
<!DOCTYPE html><html><head><title>{{ flatpage.title }}</title></head><body>{{ flatpage.content }}</body></html>
这个模板只有一个上下文 flatpage. {{ flatpage.title }} 和 {{ flatpage.content }} 可以直接在后台写入原生html
获取所有的静态页面对象
{% load flatpages %}
{% get_flatpages as flatpages %}
<ul>
{% for page in flatpages %}
<li><a href="{{ page.url }}">{{ page.title }}</a></li>
{% endfor %}
</ul>
只给注册用户显示
{% get_flatpages for someuser as about_pages %}
根据 url 获取
{% get_flatpages '/about/' as about_pages %}
{% get_flatpages '/about/' for someuser as about_pages %}