【问题标题】:How to create dynamic pages in Django?如何在 Django 中创建动态页面?
【发布时间】:2021-12-17 08:32:05
【问题描述】:

我想像在 WordPress 中一样在 Django 中创建动态页面,但我没有线索了。我创建了 django 博客,其中数据将从管理站点更新,动态博客页面将基于 postlist、postdetail 和侧边栏小部件生成。

现在,

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

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

【问题讨论】:

    标签: django django-models django-views django-templates


    【解决方案1】:

    关于 About Us/Contact/Policy 类型页面的用例,即不经常更改的页面,Django 有 flatpages 应用程序。文档在这里:
    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)
    

    【讨论】:

    • 感谢您的回答。实际上我想要的是:从管理员编辑页面创建页面(添加额外的字段,额外的页面部分)我并不是要从模块中向简单的预填充对象添加值。您可以想像我们如何通过 WordPress 中的小部件向页面添加额外的部分。我需要开发类似部分的 WordPress 小部件和类似部分的 WordPress 主题设置/更新。这样我就可以使用结构创建无限的页面。您可以将其视为小型 CMS。我曾使用过博客、页面、类别,但无法动态创建页面部分
    • 我认为您应该研究 Wagtail 或 Django-CMS。它们都建立在 Django 之上,并且具有更丰富的功能集,可能更接近您的要求:docs.wagtail.io/en/stabledocs.django-cms.org/en/latest/index.html
    猜你喜欢
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多