(custom_account_settings)= # 사용자 계정 설정 폼 사용자 정의 이 문서는 주 메뉴 하단의 "계정 설정"을 클릭하여 찾을 수 있는 사용자 계정 설정 폼을 사용자 정의하는 방법을 설명합니다. ## 새 패널 추가 이 폼의 각 패널은 사용자 모델 또는 `wagtail.users.models.UserProfile` 인스턴스에서 작동할 수 있는 별도의 모델 폼입니다. ### 기본 예시 다음은 사용자 모델에서 작동하는 새 폼을 추가하는 방법의 예시입니다. ```python # 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 = [...] ``` ```python # 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'` 로 설정합니다. ```python # forms.py from django import forms from wagtail.users.models import UserProfile class CustomProfileSettingsForm(forms.ModelForm): class Meta: model = UserProfile fields = [...] ``` ```python # 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` 클래스를 사용하여 새 탭을 정의할 수 있습니다. ```python # 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` 씩 증가합니다. ## 템플릿 사용자 정의 템플릿 이름을 지정하여 패널에 대한 사용자 지정 템플릿을 제공할 수 있습니다. ```python # 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' ``` ```html+django {# templates/myapp/admin/custom_settings.html #} {# Wagtail이 사용하는 기본 템플릿으로, 폼만 렌더링합니다 #} {% block content %} {% for field in form %} {% include "wagtailadmin/shared/field.html" with field=field %} {% endfor %} {% endblock %} ```