Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

MyPrograming

(계속) Django Authentication 기능을 통한 정보 수정 본문

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에 변경 사항이 저장된다.
  • 비밀번호가 변경된 후에는 모든 세션이 자동으로 로그아웃 된다.

 

반응형