Development/Django(멋쟁이사자처럼 7기 운영진)

[멋사7기] 4주차 - 1,2 . pk, path converter, get_object_or_404

안다희 2019. 1. 30. 23:04
728x90


mission : 본문미리보기 - 클릭하면 본문상세보기


1) models.py

class Blog(models.Model):
title = models.CharField(max_length = 200)
pub_date = models.DateTimeField('data published')
body = models.TextField()
objects = models.Manager()

def __str__(self):
return self.title

def summary(self):
return self.body[:100] //추가


2) home.html

<p> {{blog.summary}} <a href>...more</a> </p>



3) urls.py

path('blog/<int:blog_id>', blog.views.detail, name="detail"),

그럼 이제 blog.views 안에 detail 함수 만들어야겠지.


4) views.py

from django.shortcuts import render, get_object_or_404


def detail(request, blog_id):
blog_detail = get_object_or_404(Blog, pk = blog_id)
return render(request, 'detail.html', {'blog': blog_detail})

그럼 이제 detail.html이 있어야하겠지


5) detail.html

<h1>자세한 본문 내용</h1>
<br>
<h2> 제목 : {{blog.title}} </h2>
<h2> 작성 날짜 : {{blog.pub_date}} </h2>
<h2> 본문 전체 : {{blog.body}} </h2>

이제 home에서 href만 잘 넘겨주면 되겠다!


6) 다시 home.html

{% for blog in blogs.all %}
<h1> {{blog.title}} </h1>
<p> {{blog.pub_date}} </p>
<p> {{blog.summary}} <a href="{%url 'detail' blog.id %}">...more</a> </p>
<br><br>
{% endfor %}


get_object_or_404 : object를 가져와주기도하고, 예외처리를 해주기도하는 역할





출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]