如何在 Django 中创建动态页面?

How to create dynamic pages in Django?

我想像在 WordPress 中一样在 Django 中创建动态页面,但我 运行 毫无头绪。我创建了 django 博客,其中数据将从管理站点更新,动态博客页面将基于帖子列表、帖子详细信息和侧边栏小部件生成。

现在,

我想创建可以从单个视图创建多个页面的页面。例如,关于我们页面、关于服务页面、联系页面、一些静态页面(如隐私政策..)

管理员将能够从管理员端更新内容并决定在该页面的哪个部分显示哪些内容。喜欢(图片、视频、文本、幻灯片等,但将独立于模板配置)喜欢 WordPress 页面自定义。

关于 About Us/Contact/Policy 类型页面的用例,即不经常更改的页面,Django 有平面应用程序。此处的文档:
https://docs.djangoproject.com/en/3.2/ref/contrib/flatpages/

Flatpages 可以很好地插入管理,因此您可以从那里更新它们。

听起来您还想要一个所见即所得的编辑器。为此,我推荐 CKEditor。它是高度可定制的,并且有一个维护良好且流行的 Django 集成 https://pypi.org/project/django-ckeditor/

也可以让 CKEditor 与您的平面页面一起工作:

admin.py

from ckeditor.widgets import CKEditorWidget
from django.contrib import admin
from django.contrib.flatpages.admin import FlatPageAdmin
from django.contrib.flatpages.models import FlatPage

class FlatPageAdmin(FlatPageAdmin):
    formfield_overrides = {models.TextField: {"widget": CKEditorWidget}}

# workaround to get the flatpages app to use CKeditor
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)