Python/python 클론코딩
(계속) Django Authentication 기능을 통한 정보 수정
SeongWon
2020. 4. 2. 22:33
반응형
user_info_modify.html
<form class="mt-3" action="{% url 'accounts:modify' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
프로필 메세지 : <input type="text" class="form-control" id="profile_msg" name="profile_msg" value="{{ user.profile_msg }}">
</div>
<div class="form-group">
이메일 : <input type="email" class="form-control" id="email" name="email" value="{{ user.email }}">
</div>
<div class="form-group">
이름 : <input type="text" class="form-control" id="name" name="name" value="{{ user.first_name }}">
</div>
<div class="form-group">
새 비밀번호 : <input type="password" class="form-control" id="new_user_pw" name="new_user_pw" placeholder="변경할 비밀번호를 입력하세요.">
</div>
<button type="submit" class="btn btn-primary">수정하기</button>
</form>
modifyView.py
from django.contrib.auth.models import User
@login_required
def ModifyView(request):
if request.method == 'GET':
return render(request, 'user_info_modify.html')
elif request.method == 'POST':
user = request.user
profile_msg = request.POST.get('profile_msg')
email = request.POST.get('email')
name = request.POST.get('name')
new_user_pw = request.POST.get('new_user_pw')
user.profile_msg = profile_msg
user.email = email
user.first_name = name
user.set_password(new_user_pw)
user.save()
return redirect('instagram:list', user.username)
- user 객체를 통해 form으로 서버에 전송된 입력 데이터를 바로 DB에 변경할 수 있다.
- 정보를 수정한 후에는 user.save()를 해줘야 DB에 변경 사항이 저장된다.
- 비밀번호가 변경된 후에는 모든 세션이 자동으로 로그아웃 된다.
반응형