728x90
반응형
마지막으로!!
Detail page를 설정해주기 위해 부가적인 기능을 추가해주는 걸 공부해보자!
15. 글자수를 제한해주는 기능 넣어주기
* models.py에 home.html에서는 본문 내용이 100글자만 보이게 해줌
* 리스트의 슬라이싱 기능을 사용
def summary(self):
return self.body[:100]
16. more 이라는 글자 링크 달아주기
* 아직 detail page의 url 정의하지 않아서 비워둠
<!-- <p>{{ blog.body }}</p> -->
<p>{{ blog.summary }}<a href="">....more</a></p>
17. 각각의 detail page에 해당하는 페이지 열어주기 위해 urls.py / views.py / templates 수정
- urls.py에 n번째 블로그 객체를 요청하면 n번째 객체의 본문 내용을 띄우기 위해 pk(primary key 사용)
from django.contrib import admin
from django.urls import path
from blog import views
import blog.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name="home"),
path('blog/<int:blog_id>', blog.views.detail, name="detail")
]
- views.py에 404 에러 화면을 받아오기 위해 수정
* 존재하지 않는 객체를 요청할 경우 404 에러 띄움
- views.py에 request가 들어오면 몇 번 객체를 다룰 것인지에 대한 정보에 해당하는 함수를 만든다
** url/blog/객체번호(n) -> 따라서 detail.html은 딱 한 개만 만들 것임
from django.shortcuts import render, get_object_or_404
# get_object_or_404 함수 사용하기 위해 import 해줌
from .models import Blog
def detail(request, blg_id):
blog_detail = get_object_or_404(Blog, pk=blog_id)
#blog_detail 객체에 pk=blog_id인 특정 개체 저장, 없으면 404 에러
return render(request, 'detail.html', {'blog':blog_detail})
#detail.html 에 띄워주세요.
18. more 링크 클릭시 detail 페이지로 전환을 위해 16번에서 비워둔 링크 추가
<p>{{ blog.summary }}<a href="{% url 'detail' blog.id %}">....more</a></p>
19. detail.html에 본문 내용 표시되도록 수정
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Detail page 입니다.</h1>
<div class="container">
<h1>{{ blog.title }}</h1>
<p>{{ blog.pub_date }}</p>
<p>{{ blog.body }}</p>
<a href="{% url 'home' %}">돌아가기</a></p>
</div>
</body>
</html>
길고 길었던 멋사 mtv 세션
blog app 생성 복습하기 끝!
728x90
반응형
'⭐️ 개발 > Web' 카테고리의 다른 글
[장고] Blog app - 1:N 댓글 기능 구현하기 (0) | 2020.07.11 |
---|---|
[장고] 장고를 통해 Blog app 생성하는 과정(2) - View&Templates (0) | 2020.07.06 |
[장고] 장고를 통해 Blog app 생성하는 과정(1) - Model&Admin (2) | 2020.07.06 |
[장고]Mac OS에 장고 설치하고 가상환경 설정하기 (0) | 2020.07.05 |