#django #django-models #django-views #django-templates
Вопрос:
Я хочу создавать динамические страницы в Django, как в WordPress, но у меня заканчиваются подсказки. Я создал блог django, в котором данные будут обновляться с сайта администратора, а динамические страницы блога будут создаваться на основе postlist, postdetail и виджета боковой панели.
Теперь,
Я хочу создать страницу, на которой из одного представления можно создать несколько страниц. Например, страница «О нас», страница «Об услугах», страница контактов, какая-то статическая страница (например, политика конфиденциальности ..)
Где администратор сможет обновлять содержимое со стороны администратора и решать, какой контент отображать в какой части этой страницы. Например (изображение, видео, тексты, слайды и т. Д., Но Это не зависит от конфигурации шаблона) Как настройка страницы WordPress.
Ответ №1:
Что касается вариантов использования страниц типа О нас / Контакты / Политика, то есть страниц, которые меняются нечасто, в Django есть приложение flatpages. Документация здесь:
https://docs.djangoproject.com/en/3.2/ref/contrib/flatpages/
Flatpages прекрасно подключается к admin, поэтому вы можете обновлять их оттуда.
Также похоже, что вам нужен редактор 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)
Комментарии:
1. Спасибо за ответ. На самом деле я хочу: создавать страницы из страниц редактирования администратора (добавлять дополнительные поля, дополнительные разделы страниц) Я не имею в виду добавлять значения к простому предварительно заполненному объекту из модуля. Вы можете подумать о том, как мы добавляем дополнительные разделы на страницы с помощью виджета в WordPress. Мне нужно разработать раздел, похожий на виджет WordPress, и раздел «Настройки / обновление темы WordPress». Чтобы я мог создавать неограниченное количество страниц, используя структуры. Вы можете рассматривать это как небольшую CMS. Я работал с блогом, страницами, категориями, но не смог динамически создавать разделы страниц
2.Я думаю, вам следует изучить либо Wagtail, либо Django-CMS. Они оба построены поверх Django и будут иметь более богатый набор функций, которые, вероятно, ближе к тому, что вам требуется: docs.wagtail.io/en/stable docs.django-cms.org/en/latest/index.html