[django] DeleteView로 계정삭제

Hyeseong·2020년 12월 12일
0

django

목록 보기
5/35
post-thumbnail

목적

DeleteView를 이용하여 사용자의 계정을 삭제하기위한 MTV를 구현해보고 활용해 볼게요.

준비사항

  • DeleteView
  • delete.html

View

AccountDeleteView를 선언하고 DeleteView를 상속받을거에요.
내부 변수는 model, success_url, template_name으로 각각 둘거에요.

딱히 어려운 부분은 없조?

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

Routing(urls mapping in accountapp)

본인에게 해당하는 pk값을 받아야 하므로 <int:pk>를 삭제하는 url에도 첫번째 인자로 설정해줍니다.
view에서 정의한 AccountDeleteView를 2번째인자로 설정하여 url로 호출시 실행되도록 할게요.

#생략
from accountapp.views import hello_world, AccountCreateView, AccountDetailView, AccountUpdateView, AccountDeleteView

app_name = 'accountapp'

urlpatterns = [
	# 생략
    path('delete/<int:pk>/', AccountDeleteView.as_view(), name='delete'),

]

Template -1(delete.html)

delete.html을 만들어 볼게요.

특이한 것은 없고 form태그와 csrf_token, input 태그 정도만 있을 뿐이에요.
하지만 계정 삭제가 이루어지는만큼 소홀히 만들 수 없겠조?

{% extends 'base.html' %}

{% block content %}

    <div style="text-align: center; max-width: 500px; margin: 4rem auto;">
        <div class="mb-4">
	<h4>Delete</h4>
    </div>
        <form action="{% url 'accountapp:delete' pk=user.pk %}" method="post">
            {% csrf_token %}
            <input type="submit" class="btn btn-danger rounded-pill col-6 mt-3">
        </form>
    </div>



{% endblock %}

Template -2(detail.html)

기존 작성한 detail.html에 계정 삭제 버튼을 만들어 볼게요.

아래 부분을 if문 안에 넣어주면 되요.

<a href="{% url 'accountapp:delete' pk=user.pk %}">
	<p>Delete</p>
</a>`
{% 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 %}
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글