Spec-Zone.ru › Wagtail 2

Настройка формы настроек учетной записи пользователя

В данном документе описывается, как настроить форму настроек учетной записи пользователя, которая доступна по нажатию на «Настройки учетной записи» в нижней части основного меню.

Добавление новых панелей

Каждая панель на этой форме представляет собой отдельную форму модели, которая может работать с экземпляром модели пользователя или модели UserProfile.

Базовый пример

Вот пример добавления новой формы, которая работает с моделью пользователя:

# forms.py

from django import forms
from django.contrib.auth import get_user_model

class CustomSettingsForm(forms.ModelForm):

    class Meta:
        model = get_user_model()
        fields = [...]
# hooks.py

from wagtail.admin.views.account import BaseSettingsPanel
from wagtail.core import hooks
from .forms import CustomSettingsForm

@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
    name = 'custom'
    title = "My custom settings"
    order = 500
    form_class = CustomSettingsForm
    form_object = 'user'

Атрибуты следующие:

  • name - Уникальное имя панели. Все поля формы имеют префикс с этим именем, поэтому оно должно быть в нижнем регистре и не содержать символов -
  • title - Заголовок, отображаемый пользователю
  • order - Используется для упорядочивания панелей на вкладке. Встроенные панели Wagtail начинаются с 100 и увеличиваются на 100 для каждой панели.
  • form_class - Класс-подкласс ModelForm, который работает с пользователем или профилем
  • form_object - Устанавливается в user для работы с пользователем и в profile для работы с профилем
  • tab (необязательно) - Указывает, на какой вкладке отображается панель.
  • template_name (необязательно) - Переопределяет шаблон по умолчанию, используемый для отображения панели

Работа с моделью UserProfile

Чтобы добавить панель, которая изменяет данные в экземпляре UserProfile пользователя, установите form_object в 'profile'.

# forms.py

from django import forms
from wagtail.users.models import UserProfile

class CustomProfileSettingsForm(forms.ModelForm):

    class Meta:
        model = UserProfile
        fields = [...]
# hooks.py

from wagtail.admin.views.account import BaseSettingsPanel
from wagtail.core import hooks
from .forms import CustomProfileSettingsForm

@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
    name = 'custom'
    title = "My custom settings"
    order = 500
    form_class = CustomProfileSettingsForm
    form_object = 'profile'

Создание новых вкладок

Вы можете определить новую вкладку, используя класс SettingsTab:

# hooks.py

from wagtail.admin.views.account import BaseSettingsPanel, SettingsTab
from wagtail.core import hooks
from .forms import CustomSettingsForm

custom_tab = SettingsTab('custom', "Custom settings", order=300)

@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
    name = 'custom'
    title = "My custom settings"
    tab = custom_tab
    order = 100
    form_class = CustomSettingsForm

SettingsTab принимает три аргумента:

  • name - псевдоним, используемый для вкладки (он размещается после #, когда ссылка ведет на вкладку)
  • title - отображаемое имя заголовка
  • order - порядок вкладки. Встроенные вкладки Wagtail начинаются с 100 и увеличиваются на 100 для каждой вкладки

Настройка шаблона

Вы можете предоставить пользовательский шаблон для панели, указав имя шаблона:

# hooks.py

from wagtail.admin.views.account import BaseSettingsPanel
from wagtail.core import hooks
from .forms import CustomSettingsForm

@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
    name = 'custom'
    title = "My custom settings"
    order = 500
    form_class = CustomSettingsForm
    template_name = 'myapp/admin/custom_settings.html'
{# templates/myapp/admin/custom_settings.html #}

{# This is the default template Wagtail uses, which just renders the form #}

<ul class="fields">
    {% for field in form %}
        {% include "wagtailadmin/shared/field_as_li.html" with field=field %}
    {% endfor %}
</ul>
  • Предыдущая Журнал аудита
  • Следующая Настройка редактирования/создания групп

Содержание страницы

  • Настройка формы настроек учетной записи пользователя
    • Добавление новых панелей
      • Базовый пример
      • Работа с моделью UserProfile
      • Создание новых вкладок
      • Настройка шаблона

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/extending/custom_account_settings.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API