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
복사