728x90
반응형
views.py
class AccountUpdateView(UpdateView):
model = User
form_class = AccountUpdateForm # 수정한 form으로 변경
success_url = reverse_lazy('accountapp:hello_world')
template_name = 'accountapp/update.html'
- user 정보 수정하기 위해 장고 제공 함수인 updateView 사용
- AccountUpdateForm 이름의 내가 정의한 forms.py 생성
- 수정 완료 후 메인화면인 hello_world로 이동
urls.py
from django.urls import path
from accountapp.views import AccountUpdateView
app_name = "accountapp"
urlpatterns = [
path('update/<int:pk>', AccountUpdateView.as_view(), name='update'),
]
- 생성한 views 주소 등록
forms.py
from django.contrib.auth.forms import UserCreationForm
class AccountUpdateForm(UserCreationForm):
# 초기화 이후에 username칸만 비활성화
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].disabled = True
- user 정보 변경 시 초기화 한 후 username 칸 비활성화하기 위한 disabled 처리
- 장고 제공 UserCreationForm 함수 상속
detail.html
{% extends 'base.html' %}
{% load bootstrap4 %}
{% block content %}
<div>
<div style="text-align: center; max-width: 500px; margin: 4rem auto;">
<p>
<!-- 가입 시간 -->
{{ target_user.date_joined }}
</p>
<h2 style="font-family: NanumBarunpenB">
{{ target_user.username }}
</h2>
{% if target_user == user %}
<a href="{% url 'accountapp:update' pk=user.pk %}">
<p>
Change Info
</p>
</a>
{% endif %}
</div>
</div>
{% endblock %}
- 유저 정보변경(change Info) 주소로 연결
- pk는 어차피 target_user인 경우만 해당되기 때문에 user.pk로 지정
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 %}
{% bootstrap_form form %}
<input type="submit" class="btn btn-primary">
</form>
</div>
{% endblock %}
- username, password, re-password form 입력
- 변경 사항 저장
- detail.html 화면
- change Info 링크로 이동
- 유저 정보 변경 update.html 화면
반응형
'Backend > Django' 카테고리의 다른 글
django 15. Authentication 인증시스템 구축 (0) | 2021.10.06 |
---|---|
django 14. DeleteView 기반 회원탈퇴 구현 (0) | 2021.10.06 |
django 12. DetailView 를 이용한 개인 페이지 구현 (0) | 2021.10.05 |
django 11. Login/ Logout 구현 (0) | 2021.10.05 |
django 10. CreateView 를 통한 회원가입 구현 (0) | 2021.10.05 |