📢 공지사항
home

UpdateView를 이용한 비밀번호 변경 구현 (1)

1.
views.py class view 생성
class AccountCreateView(UpdateView): # User라는 장고에서 기본적으로 사용하는 model사용 model = User # form 지정 form_class = UserCreationForm # 연결 성공시 이동하는 페이지 지정 # reverse는 그대로 class에서 사용할 수 없기때문에, class형 view에서는 reverse_lazy # reverse는 function형 view에서 사용 success_url = reverse_lazy('accountapp:hello_world') template_name = 'accountapp/create.html'
Python
복사
2.
urlpatterns에 path 설정
path('update/<int:pk>', AccountUpdateView.as_view(), name='update'),
3.
update.html 생성
{% extends 'base.html' %} {% load bootstrap4 %} {% block content %} <div style="text-align: center; max-width : 500px; margin:4rem auto;"> <div class="mb-4"> <h4>Change Info</h4> </div> <form action="{% url 'accountapp:update' pk=user.pk %}" method="post"> {% csrf_token %} <!-- 우리가 지정한 form 파일을 그대로 받아와준다. --> {% bootstrap_form form %} <input type = "submit" class="btn btn-dark rounded-pill col-6 mt-3"> </form> </div> {% endblock %}
HTML
복사
4.
detail.html 수정
target_user가 user와 같을 경우와 그렇지 않은 경우 조건문으로 나눠주기!
{% extends 'base.html' %} {% block content %} <div> <div style="text-align : center; max-width : 500px; margin : 4rem auto;"> <p> {{ target_user.date_joined }} </p> <h2 style="font-family: 'MaruBuri-Bold'"> {{ target_user.username }} </h2> {% if target_user == user %} <a href="accountapp:update" pk=user.pk> <p> Change Info </p> </a> {% endif %} </div> </div> {% endblock %}
HTML
복사
5.
Update View의 Username 비활성화 시켜주기 [ ./accountapp/forms.py 생성]
from django.contrib.auth.forms import UserCreationForm class AccountUpdateForm(UserCreationForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['usernmae'].disabled = True
Python
복사
DeleteView 기반 회원탈퇴 구현
1.
views.py DeleteView 명시
class AccountDeleteView(DeleteView): model = User success_url = reverse_lazy('accountapp:login') template_name = 'accountapp/delete.html'
Python
복사
2.
urlpatterns에 delete
path('delete/<int:pk>', AccountDeleteView.as_view(), name='delete'),
3.
delete.html 파일 생성
{% extends 'base.html' %} {% load bootstrap4 %} {% block content %} <div style="text-align: center; max-width : 500px; margin:4rem auto;"> <div class="mb-4"> <h4>Quit</h4> </div> <form action="{% url 'accountapp:delete' pk=user.pk %}" method="post"> {% csrf_token %} <!-- 우리가 지정한 form 파일을 그대로 받아와준다. --> {% bootstrap_form form %} <input type = "submit" class="btn btn-dark rounded-pill col-6 mt-3"> </form> </div> {% endblock %}
HTML
복사
4.
detail.html의 Change Info의 div 태그 아래 추가로 기입해주기
<a href="{% url 'accountapp:delete' pk=user.pk %}"> <p> Quit </p> </a>
HTML
복사