https://www.pythoneatstail.com/en/overview-all-articles/allowing-users-update-and-delete-their-profile/

 

Allowing users to update and delete their profile - PythonEatsTai

Just submitting the form is enough, Django does the rest. For update.html, the relevant part of the template is (shown in part):

www.pythoneatstail.com

 

 

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>

+ Recent posts