이번에는 저번 포스팅에서 만들었던 게임정보를 수정하는 기능을 구현하겠습니다.
■ 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
반응형
'자격증 & 문제풀이 > Django-Project' 카테고리의 다른 글
[Django] 게임세부정보(game_detail)[댓글, 좋아요 기능] (0) | 2020.07.20 |
---|---|
[Django] Django와 데이터 연동 (0) | 2020.07.19 |
[Django] Game Model과 Game 등록(create) (0) | 2020.07.19 |
[Django] Base.html (0) | 2020.07.19 |
[Django] Home.html (0) | 2020.07.19 |