Leta Learns

django | CRUD - Update 본문

Django

django | CRUD - Update

leta 2021. 7. 7. 01:51

update.html 만들고 views.py, urls.py 수정

 

글을 update 하기 위해 필요한 정보들

  1. 어떤 글을 수정할 것인지 (글의 id)
  2. 수정하기 전 내용

{% url 'update' blog.id %}

  => 링크를 눌렀을 때 update하고자 하는 글의 id를 넘겨준다.

       views.py의 update함수에 blog.id를 인자로 넘김.

 

 

urls.py

path("update/<int:id>", update, name="update")

update/<int:id>

=> 글의 id를 id라는 변수로 받겠다는 뜻

 

 

views.py

def update(request, id):
    blog = Blog.objects.get(id = id)
    return render(request, 'update.html', {"blog":blog})

blog = Blog.objects.get(id=id)

#Blog DB에서 id값이 id인 것을 가져와 blog 변수에 담아준다.

 

{"blog": blog}

#blog 변수를 blog라는 이름으로 update.html로 넘겨준다.

 

 

 

update.html에 form 태그 추가

<form action="{% url 'update' blog.id %}" method = "POST">
    {% csrf_token %}
    <h4>제목: </h4>
    <input type="text" name="title" value=“{{blog.title}}”>
    <br>
    <br>
    <h4>본문: </h4>
    <textarea name="body" cols="30" rows="10">{{blog.body}}</textarea><br><br>
    <input type="submit" value="완료">
</form>

action = "{% url 'update' blog.id %}"

#form들의 값이 전송될 url(update)을 연결시켜준다.

 

 

views.py

def update(request, id):
    blog = Blog.objects.get(id = id)
    if request.method == "POST" #업데이트
        blog.title = request.POST["title"]
        blog.body = request.POST["body"]
        blog.save()
        return redirect('detail', blog.id)
    return render(request, 'update.html', {"blog":blog})

단순히 update.html로 들어가면 method="GET" => 내용 read

페이지 안에서 form을 제출하면 method="POST" => 내용 update

 

 

 

 

 

 

음... 졸린 거 참고 했더니 잘 이해 안 되는 듯.. 다시 봐야겠다.

 

'Django' 카테고리의 다른 글

django | template 상속, 앱 분리  (0) 2021.07.07
django | CRUD - Delete  (0) 2021.07.07
django | CRUD - Create  (0) 2021.07.07
django | CRUD - Read  (0) 2021.07.06
django | Model & Admin  (0) 2021.07.06
Comments