Pragmatic - 2

HeeJune KIM·2023년 5월 22일
0

Django_Pinterest

목록 보기
11/13

☘️ UpdateView를 이용한 비밀번호 변경 구현

  1. UpdateView를 사용하여 프로필 정보를 업데이트하는 AccountUpdateView를 정의합니다.
  2. model 속성에는 User 모델을 지정합니다. form_class 속성에는 프로필 정보를 입력받기 위해 생성한 AccountUpdateForm을 지정합니다.
  3. success_url 속성은 프로필 정보 업데이트가 성공한 경우 리디렉션할 URL을 지정합니다.
  4. template_name 속성은 업데이트 페이지의 템플릿 파일 경로를 지정합니다.
  5. URL 패턴은 /update/<int:pk>/로 설정되어 해당 프로필을 업데이트할 사용자의 고유한 기본 키를 받아옵니다.
  6. update.html 템플릿 파일을 작성합니다. 사용자 입력을 받아 프로필 정보를 업데이트하는 폼을 구성합니다. 폼의 action 속성에 pk=user.pk를 포함하여 URL에 사용자의 고유한 기본 키를 전달합니다.
  7. detail.html 템플릿 파일에 "Update Profile" 버튼을 추가하여 사용자가 자신의 프로필 정보를 변경할 수 있는 링크를 제공합니다. 이때, 현재 로그인한 사용자와 대상 프로필이 동일한 경우에만 버튼이 표시되도록 target_user == user 조건을 사용합니다.
  8. AccountUpdateFormUserCreationForm을 상속받아 프로필 정보 업데이트 폼을 정의합니다. __init__ 메서드를 오버라이드하여 username 필드를 비활성화하고 입력할 수 없도록 설정합니다.

© View

from accountapp.forms import AccountUpdateForm # forms.py 파일을 만들 거에요.


# 생략

class AccountUpdateView(UpdateView):
    model = User 
    form_class = AccountUpdateForm
    success_url = reverse_lazy('accountapp:hello_world')
    template_name = 'accountapp/update.html'

© Template

{% extends 'base.html' %}

{% block content %}

    <div>
	    <div style="text-align: center; max-width: 500px; margin: 4rem auto;">
	    	<p>
                {{target_user.date_joined}}
            </p>
	    	<h2 style="font-family: 'NanumSquareB'">
                {{target_user.username}}
            </h2>

            {% if target_user == user %}
            <a href="{% url 'accountapp:update' pk=user.pk %}">
                <p>Update Profile</p>
            </a>
            {% endif %}
	    </div>
</div>


{% endblock %}

© form

from django.contrib.auth.forms import UserCreationForm

class AccountUpdateForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.fields['username'].disabled = True

☘️ DeleteView 기반 회원탈퇴 구현

  1. DeleteView를 사용하여 계정을 삭제하는 AccountDeleteView를 정의합니다.
  2. model 속성에는 User 모델을 지정합니다. success_url 속성에는 계정 삭제가 성공한 경우 리디렉션할 URL을 지정합니다.
  3. template_name 속성은 삭제 페이지의 템플릿 파일 경로를 지정합니다.
  4. URL 패턴은 /delete/<int:pk>/로 설정되어 삭제할 계정의 고유한 기본 키를 받아옵니다.
  5. delete.html 템플릿 파일을 작성합니다. 계정을 삭제하기 위한 폼을 구성합니다. 폼의 action 속성에 pk=user.pk를 포함하여 URL에 사용자의 고유한 기본 키를 전달합니다.
  6. detail.html 템플릿 파일에 "Delete" 버튼을 추가하여 사용자가 자신의 계정을 삭제할 수 있는 링크를 제공합니다. 이때, 현재 로그인한 사용자와 대상 계정이 동일한 경우에만 버튼이 표시되도록 target_user == user 조건을 사용합니다.

© View

class AccountDeleteView(DeleteView): # DeleteView를 임포트하는것 잊지마세요.
    model = User
    success_url = reverse_lazy('accountapp:login')
    template_name = 'accountapp/delete.html'

© Detail

{% extends 'base.html' %}

{% block content %}

    <div>
	    <div style="text-align: center; max-width: 500px; margin: 4rem auto;">
	    	<p>
                {{target_user.date_joined}}
            </p>
	    	<h2 style="font-family: 'NanumSquareB'">
                {{target_user.username}}
            </h2>

            {% if target_user == user %}
            <a href="{% url 'accountapp:update' pk=user.pk %}">
                <p>Update Profile</p>
            </a>
            <a href="{% url 'accountapp:delete' pk=user.pk %}">
                <p>Delete</p>
            </a>
            {% endif %}
	    </div>
</div>



{% endblock %}

0개의 댓글

관련 채용 정보