자격증 & 문제풀이/Django-Project

[Django] Game Update와 Delete

YSY^ 2020. 7. 19. 22:55

이번에는 저번 포스팅에서 만들었던 게임정보를 수정하는 기능을 구현하겠습니다.

■ views.py

Update는 UpdateView를 이용합니다.

get_success_url은 향후 game_datail(게임세부정보)가 완성되었을 때 추가시키면 됩니다.

from django.views.generic import CreateView, UpdateView, DeleteView

class GameUpdateView(UpdateView):
    template_name = 'game/game_update.html'
    form_class = GameCreateForm
    model = Game  #update는 create와 다르게 폼을 만들때 조회를 해야하기때문에 모델을 지정해주어야함

    def get_success_url(self):
        return reverse('game:detail',args=[self.object.pk]) #self.object : insert한 모델객체

 

Delete는 함수를 이용합니다. redirect는 추후 list가 구현되면 작동될 것입니다.

def game_delete(request, pk):
    game = Game.objects.get(pk=pk) #조회
    game.delete()
    return redirect(reverse('game:list'))

 

■ urls.py

update과 delete url을 등록합니다.

from django.urls import path

from . import views

app_name = 'game'
urlpatterns = [
    path('create/', views.GameCreateView.as_view(), name='create'),
    path('<int:pk>/update/',views.GameUpdateView.as_view(), name = 'update'),
    path('<int:pk>/delete/', views.game_delete, name='delete'),


]

 

■ game_update.html

game_update.html 를 templates/game에 만듭니다.

{% extends "base.html" %}

{% block title%}게임정보 수정{% endblock title %}

{% block content%}
<h1>제품정보 수정</h1>
<form method='post'>
    {% csrf_token %}
    <table>
        {{form.as_table}}
    </table> 
    <p>
        <button type='submit' class='btn btn-primary'>UPDATE</button>
    </p>
</form>
{% endblock content %}

 

 

 

■ 결과물(Update)

나중에 추가될 게임세부정보에서 수정버튼을 누르면 '게임정보 수정' 페이지가 나오도록 하였습니다.

728x90
반응형