django_orm(delete&update)

sunjin·2023년 4월 4일
0

Django

목록 보기
10/12
post-thumbnail

redirect()

인자에 작성된 주소로 다시 요청을 보냄

views.py

from django.shortcuts import render, redirect 

def . . .

	return redirect('articles:detail',article.pk)
  • redirect 함수 적용 하는 방법 !

HTTP

네트워크 상에서 데이터를 주고 받기 위한 약속

HTTP request methods

데이터에 어떤 요청을 원하는지를 나타내는 것


'GET' & 'POST'

  • GET : 조회하는 요청, 데이터를 가져올 때만 사용해야 한다.

  • POST: 변경사항을 만드는 요청 > POST를 사용할땐 반드시 csrf token 태그를 사용해야 한다.

html

<form action"#" method='POST'>
  { % csrf_token % }
  ....

Delete

  • 앱 이름 : articles

  • 모델 이름: Article


  1. urls.py에 작성하기

path('<int:pk>/delete/', views.delete, name='delete'),
  1. views 작성하기

def delete(request, pk):
	article=Article.objects.get(pk=pk)
    article.delete()
    return redirect('articles:index')
  1. templates에 작성하기 (delete는 상세화면인 detail파일에 작성)
detail.html

...
<form action="{ % url 'articles:delete' article.pk %}" method="POST">
	 { % csrf_token % }
     <input type="submit" value="delete">
 </form>
 
 ...

UPDATE (수정)

  • 사용자 입력 받는 페이지 렌더링 : edit
  • 사용자 입력한 데이터 받아 db에 저장 : update

edit 로직 작성

  1. urls.py
path('<int:pk>/edit', views.edit, name='edit'),
  1. views.py
def edit(request,pk):
	article = Article.objects.get(pk=pk)
    context = { 'article': article,}
    return render(request, 'articles/edit.html, context)
  1. templates 작성
edit.html
...
<form action="#" method="POST">
	 { % csrf_token % }
	<input tyype="submit" value="{{ article.title }}">
  
  ......
  • 수정 시 이전 데이터가 출력 될 수 있도록 처리
  • {{ article.content }} , {{ article.pk }} 등등

update 로직 작성

  1. urls.py
path('<int:pk>/update, views.update, name='update'),
  1. views.py
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)
  1. templates
  • edit에 작성
  • url 부분 채우기
edit.html
...
<form action="{% url 'articles:update' article.pk}" method="POST">
	 { % csrf_token % }
	<input tyype="submit" value="{{ article.title }}">
  ...
profile
🍀

0개의 댓글