인자에 작성된 주소로 다시 요청을 보냄
views.py
from django.shortcuts import render, redirect
def . . .
return redirect('articles:detail',article.pk)
네트워크 상에서 데이터를 주고 받기 위한 약속
데이터에 어떤 요청을 원하는지를 나타내는 것
GET : 조회하는 요청, 데이터를 가져올 때만 사용해야 한다.
POST: 변경사항을 만드는 요청 > POST를 사용할땐 반드시 csrf token 태그를 사용해야 한다.
html
<form action"#" method='POST'>
{ % csrf_token % }
....
앱 이름 : articles
모델 이름: Article
path('<int:pk>/delete/', views.delete, name='delete'),
def delete(request, pk):
article=Article.objects.get(pk=pk)
article.delete()
return redirect('articles:index')
detail.html
...
<form action="{ % url 'articles:delete' article.pk %}" method="POST">
{ % csrf_token % }
<input type="submit" value="delete">
</form>
...
edit 로직 작성
path('<int:pk>/edit', views.edit, name='edit'),
def edit(request,pk):
article = Article.objects.get(pk=pk)
context = { 'article': article,}
return render(request, 'articles/edit.html, context)
edit.html
...
<form action="#" method="POST">
{ % csrf_token % }
<input tyype="submit" value="{{ article.title }}">
......
update 로직 작성
path('<int:pk>/update, views.update, name='update'),
def update(request,pk):
article = Article.objects.get(pk=pk)
article.title = request.POST.get('title')
article.content = reques.POST.get('content')
article.save()
return redirect('articles:detail, article.pk)
edit.html
...
<form action="{% url 'articles:update' article.pk}" method="POST">
{ % csrf_token % }
<input tyype="submit" value="{{ article.title }}">
...