Django
django | CRUD - Update
leta
2021. 7. 7. 01:51
update.html 만들고 views.py, urls.py 수정
글을 update 하기 위해 필요한 정보들
- 어떤 글을 수정할 것인지 (글의 id)
- 수정하기 전 내용
{% 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
음... 졸린 거 참고 했더니 잘 이해 안 되는 듯.. 다시 봐야겠다.