Как создавать динамические страницы в Django?

Я хочу создавать динамические страницы в Django, как в WordPress, но у меня не хватает подсказки. Я создал django блог, где данные будут обновляться из админки, а динамические страницы блога будут генерироваться на основе списка постов, подробностей постов и виджета боковой панели.

Сейчас,

Я хочу создать страницу, на которой из одного вида можно создать несколько страниц. Например, страница О нас, страница об услугах, страница контактов, некоторые статические страницы (например, политика конфиденциальности...)

Где администратор сможет обновлять контент со стороны администратора и решать, какой контент отображать на той или иной части страницы. Например (изображение, видео, тексты, слайды и т.д., но это будет независимо от конфигурации шаблона) Как WordPress настройка страницы.

Что касается использования страниц типа About Us/Contact/Policy, т.е. страниц, которые меняются нечасто, в Django есть приложение flatpages. Документация здесь:
https://docs.djangoproject.com/en/3.2/ref/contrib/flatpages/

Flatpages прекрасно подключается к админке, поэтому вы можете обновлять их оттуда.

Также похоже, что вам нужен WYSIWYG-редактор. Для этого я бы рекомендовал 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)
Вернуться на верх