본문 바로가기

학습/[The-Origin][SW][Backend] Main Pag

[The Origin][VSCODE][Django][CRUD] Delete

반응형

삭제하기

링크 만들고 기능 연결하기

  - (app의 urls.py) 지우기 기능 링크 이름 지정

  - (post_card.html) 링크 만들기

  - (post_confirm_delete.html) 삭제 화면 구성

{% extends 'base.html' %}

{% block title %}글 삭제{% endblock %}

{% block content %}
<h1>Post 삭제 화면</h1>
<form action="" method="POST">
    {% csrf_token %}
    <p>한번 삭제된 데이터는 복구가 불가능 합니다.</p><br/>
    <p>그래도 삭제하시겠습니까? ID : {{ post.id }}</p><br/>

    <a href="{% url 'index' %}">돌아가기</a>
    <input type="sumbit" value="삭제하기">
</form>
<hr>
{% include 'mixin/posts/post_card.html' with detail=True %}
{% endblock %}

기능구현

  - app의 views.py

@login_required
def post_delete_view(request, id):
    Post = get_list_or_404(post, id=id)

    if request.method == 'GET':
        context = {'post' : Post }
        return render(request, 'posts/post_confirm_delete.html', context)
    else:
        Post.delete()
        return redirect('index')

  - Post.delete() : Hard ware 삭제

  - 삭제 완료 후 초기화면(index)로 이동


Tip 

raise Http404 ('Error 메시지')

  - 404 페이지에 Error메시지를 집어 넣어서 발생

@login_required
def post_delete_view(request, id):
    Post = get_list_or_404(post, id=id)

    if request.user != post.writer:
        raise Http404('잘못된 접근입니다.')

    if request.method == 'GET':
        context = {'post' : Post }
        return render(request, 'posts/post_confirm_delete.html', context)
    else:
        Post.delete()
        return redirect('index')

get_list_or_404

  - 메시지는 없지만 일치하지 않았을 때 존재하지 않는 페이지로서 Error 발생

@login_required
def post_delete_view(request, id):
    Post = get_list_or_404(post, id=id, writer=request.user)

    #if request.user != post.writer:
    #    raise Http404('잘못된 접근입니다.')

    if request.method == 'GET':
        context = {'post' : Post }
        return render(request, 'posts/post_confirm_delete.html', context)
    else:
        Post.delete()
        return redirect('index')
반응형