class AccountUpdateView(UpdateView):
model = User
form_class = UserCreationForm
success_url = reverse_lazy('accountapp:hello_world')
template_name = 'accoountapp/update.html'
Python
복사
views.py
path('update/<int:pk>', AccountUpdateView.as_view(), name='update'),
Python
복사
urls.py
{% extends 'base.html' %}
{% load bootstrap4 %}
{% block content %}
<div style = "text-align: center; max-width: 600px; 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-dark rounded-pill col-6 mt-3">
</form>
</div>
{% endblock %}
HTML
복사
update.html
{% if target_user == user %}
<a href="url 'accountapp:update' pk=user.pk ">
<p>
Change Info
</p>
</a>
{% endif %}
HTML
복사
detail.html 에 추가하기
문제점!
change info를 들어가게 되면 username도 같이 바꿔서 submit이 가능하다. id를 바꿀 수 없게 username을 비활성화 시켜주는 작업이 필요하다.
from django.contrib.auth.forms import UserCreationForm
class AccountUpdateForm(UserCrationForm)
def __init__(self, *args, **kwargs)
super().__init__(*args, **kwargs):
self.fields['username'].disabled = True
Python
복사
forms.py