Как модифицировать CMS трясогузки, чтобы любой пользователь мог публиковать записи в своем собственном блоге

У меня есть существующий веб-сайт, который является приложением Django. Я установил Wagtail, и теперь CMS Wagtail доступна по адресу www.example.com/cms. Трясогузка правильно работает с моей базой данных, и все существующие пользователи видны, когда я перехожу к settings, а затем users на странице администрирования CMS трясогузки.

Я хочу использовать трясогузку, чтобы добавить функциональность блога на свой веб-сайт.

Требования

  1. Я хочу, чтобы любой пользователь мог создать новый блог и добавлять сообщения в свой блог.
  2. Я хочу, чтобы блог, созданный пользователем, был виден на www.example.com/blogs/username/

Как я могу настроить трясогузку для достижения этой цели?

Я проверил документацию по адресу http://docs.wagtail.io/en/v1.9/, но не мог понять, с чего начать свои модификации. Я также установил пример проекта блога (https://github.com/wagtail/wagtaildemo), но Я также не смог понять, как выполнить 1 и 2 выше из этого.

Любые полные ответы или общие указания очень приветствуются.


person Gary    schedule 29.03.2017    source источник
comment
Вы проверили руководство по началу работы? В качестве примера используется приложение блога docs.wagtail.io/en/ v1.9/getting_started/tutorial.html   -  person micebrain    schedule 29.03.2017
comment
@micebrain Привет, спасибо за совет, да, у меня есть, что я пытаюсь понять прямо сейчас, так это то, как я могу сделать так, чтобы блог каждого пользователя отображался в www.example.com/blogs/username/, и как я могу позволить каждому пользователю создать блог, например, если каждый пользователь (войдите через администратора CMS), это, кажется, предоставляет слишком много доступа, например. settings/users, к которым я бы не хотел, чтобы у каждого пользователя был доступ, я просто хотел бы, чтобы они могли создавать блог и добавлять в него сообщения. Или создайте блог по умолчанию для каждого пользователя, и пусть они добавляют в него сообщения, которые отображаются там www.example.com/blogs/username/   -  person Gary    schedule 29.03.2017
comment
Блоги будут доступны для создания пользователями, зарегистрированными на сайте, поэтому я просто хочу, чтобы они имели доступ к функциям блога.   -  person Gary    schedule 29.03.2017
comment
Так эффективно что-то вроде функциональности блоггера?   -  person zhqiat    schedule 29.03.2017
comment
@zhiqiat Да, почти точно (хотя сайт не является в первую очередь платформой для ведения блогов), мы просто хотим дать пользователям возможность создавать блог, если они этого хотят. Остальная часть сайта уже сделана, поэтому мне не нужна CMS для страниц и т. д., просто для создания этой функциональности блога.   -  person Gary    schedule 29.03.2017


Ответы (1)


Модель разрешений, встроенная в трясогузку, поддерживает такую ​​настройку: http://docs.wagtail.io/en/stable/topics/permissions.html

После создания индексной страницы для блога вы должны создать группу (Настройки -> Группы в панели администратора Трясогузки) для этого блога, возможно, содержащую только одного пользователя, и в разделе «Разрешения страницы» назначить ей «добавить». и разрешение «опубликовать» на этой индексной странице. Разрешения распространяются вниз по дереву от этой точки, а разрешение «добавить» включает в себя возможность редактировать страницы, которые вы создали сами, так что это даст пользователю контроль над подстраницами своего блога.

Это не совсем соответствует настройке, которую вы описали, поскольку предполагает, что существующий пользователь-администратор Wagtail должен выполнить первоначальную настройку, а не пользователи, создающие свой собственный блог. Однако, поскольку вся эта конфигурация выполняется внутри путем создания/обновления стандартных моделей Django, таких как Group и PagePermission, в принципе можно было бы написать этот процесс — например, вы могли бы реализовать представление Django для «Настроить мой блог». на интерфейсе вашего сайта, который выполняет следующие шаги:

  • Создайте BlogIndexPage под /blogs с заголовком/слагом, соответствующим request.user.username (см. https://stackoverflow.com/a/43041179/1853523 о том, как программно создавать страницы)
  • Создайте группу пользователей (django.contrib.auth.models.Group) для текущего пользователя и назначьте им разрешение wagtailadmin.access_admin (чтобы они могли войти в админку Трясогузки)
  • Создайте объект wagtailcore.PagePermission, соответствующий только что созданной группе и индексной странице блога, и добавьте разрешение; а также для разрешения «публикации»
person gasman    schedule 29.03.2017
comment
Спасибо за ваш очень подробный и полезный ответ, я уверен, что он займет меня некоторое время, теперь у меня есть именно то направление, в котором мне нужно двигаться, уверен, что другим это тоже будет полезно, большое спасибо - person Gary; 29.03.2017