meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • 테크커리어
  • 개발자도서
  • dockersecret
  • SASS Variables
  • 리눅스방화벽
  • DHCP
  • 안드로이드adaptor
  • 코틀린자료형
  • docker
  • 중첩라우트
  • 배포인프라
  • Kotlin
  • router-link
  • 리눅스인증
  • cpu사용률
  • dp #알고리즘
  • django
  • gabagecollecter
  • 이차원배열정렬
  • Proxy

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

django 13.  UpdateView를 이용한 비밀번호 변경 구현
Backend/Django

django 13. UpdateView를 이용한 비밀번호 변경 구현

2021. 10. 6. 11:27
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
    'Backend/Django' 카테고리의 다른 글
    • django 15. Authentication 인증시스템 구축
    • django 14. DeleteView 기반 회원탈퇴 구현
    • django 12. DetailView 를 이용한 개인 페이지 구현
    • django 11. Login/ Logout 구현
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바