사용자 계정 설정 폼 사용자 정의¶
이 문서는 주 메뉴 하단의 “계정 설정”을 클릭하여 찾을 수 있는 사용자 계정 설정 폼을 사용자 정의하는 방법을 설명합니다.
새 패널 추가¶
이 폼의 각 패널은 사용자 모델 또는 wagtail.users.models.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 = [...]
# wagtail_hooks.py
from wagtail.admin.views.account import BaseSettingsPanel
from wagtail import hooks
from .forms import CustomSettingsForm
@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
name = 'custom'
title = "내 사용자 지정 설정"
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 모델에서 작동¶
사용자의 wagtail.users.models.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 = [...]
# wagtail_hooks.py
from wagtail.admin.views.account import BaseSettingsPanel
from wagtail import hooks
from .forms import CustomProfileSettingsForm
@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
name = 'custom'
title = "내 사용자 지정 설정"
order = 500
form_class = CustomProfileSettingsForm
form_object = 'profile'
새 탭 만들기¶
SettingsTab 클래스를 사용하여 새 탭을 정의할 수 있습니다.
# wagtail_hooks.py
from wagtail.admin.views.account import BaseSettingsPanel, SettingsTab
from wagtail import hooks
from .forms import CustomSettingsForm
custom_tab = SettingsTab('custom', "사용자 지정 설정", order=300)
@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
name = 'custom'
title = "내 사용자 지정 설정"
tab = custom_tab
order = 100
form_class = CustomSettingsForm
SettingsTab 은 세 가지 인수를 받습니다.
name- 탭에 사용할 슬러그 (탭에 연결할 때#뒤에 배치됨)title- 제목의 표시 이름order- 탭의 순서. 내장 Wagtail 패널은100에서 시작하여 각 탭마다100씩 증가합니다.
템플릿 사용자 정의¶
템플릿 이름을 지정하여 패널에 대한 사용자 지정 템플릿을 제공할 수 있습니다.
# wagtail_hooks.py
from wagtail.admin.views.account import BaseSettingsPanel
from wagtail import hooks
from .forms import CustomSettingsForm
@hooks.register('register_account_settings_panel')
class CustomSettingsPanel(BaseSettingsPanel):
name = 'custom'
title = "내 사용자 지정 설정"
order = 500
form_class = CustomSettingsForm
template_name = 'myapp/admin/custom_settings.html'
{# templates/myapp/admin/custom_settings.html #}
{# Wagtail이 사용하는 기본 템플릿으로, 폼만 렌더링합니다 #}
{% block content %}
{% for field in form %}
{% include "wagtailadmin/shared/field.html" with field=field %}
{% endfor %}
{% endblock %}