Wagtail 방법이라기보단 Django에서 allauth를 사용하는 방법이다. 어차피 Wagtail도 Django 기반이니 상관 없을 것 같다.
1. forms.py
from django.forms import ModelForm
class CustomUserUpdateForm(ModelForm):
class Meta:
model = CustomUser
fields = ['first_name', 'last_name', 'display_name', 'date_of_birth', 'address1', 'address2', 'zip_code', 'city', 'country', 'mobile_phone', 'additional_information', 'photo',]
widgets = {'date_of_birth': forms.DateInput(attrs={'type':'date'})}
User 정보의 update를 위해서 Django ModelForm을 사용한다.
2. views.py
from django.views.generic.edit import UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import CustomUser
from .forms import CustomUserUpdateForm
class CustomUserUpdateView(UpdateView):
model = CustomUser
form_class = CustomUserUpdateForm
class CustomUserDeleteView(DeleteView):
model = CustomUser
success_url = reverse_lazy('account_signup')
Django에서 제공하는 Update, DeleteView를 사용한다.
파이썬의 클래스들은 import 시에 바로 호출이 된다.
따라서
reverse 는 fbv에서 사용이 된다.
reverse_lazy는 주로 cbv에서 success_url을 사용할 경우 사용이 된다.
3. urls.py
path('<int:pk>/update/', CustomUserUpdateView.as_view(template_name='account/update.html'), name='account_update'),
path('<int:pk>/delete/', CustomUserDeleteView.as_view(template_name='account/delete.html'), name='account_delete'),
4. delete.html
<form method="post">
{% csrf_token %}
<p>{% trans "Are you sure you want to delete the account" %} {{ object.email }}?</p>
<button type="submit" class="btn btn-danger">{% trans "Delete" %}</button>
</form>
'Back-End > PythonEatsTail' 카테고리의 다른 글
08 Social account signup and login with allauth in Django (0) | 2021.12.10 |
---|---|
06 Signup and password reset with allauth in Django (0) | 2021.12.09 |
05 Git and local settings in Django (0) | 2021.12.08 |
04 Setting up validated login with allauth in Django (0) | 2021.12.08 |
03 Setting up allauth in Django (0) | 2021.12.08 |