JavaScript required
We’re sorry, but Coda doesn’t work properly without JavaScript enabled.
Skip to content
Gallery
Django 메뉴얼
Django 메뉴얼
django 구조 + MVC, MVP, MVVM
학생 이메일 생성 방법
JetBrains 학생 라이센스
JetBrains의 Pycharm 설치
Anaconda 설치
Pycharm에서 프로젝트 생성하기
장고 프로젝트 시작!
장고 모델
Django 관리자
장고 Urls
장고 뷰 만들기
HTML 시작하기
장고 QRM (Querysets)
템플릿 동적 데이터
장고 템플릿
CSS - 예쁘게 만들기
템플릿 확장하기
애플리케이션 확장하기
장고 폼
블로그 개선하기
이미지 업로드
동영상 URL 업로드
안전한 웹사이트 만들기
댓글 모델 만들기
깃허브 업로드
파이썬애니웨어(PythonAnywhere)에 배포하기
도메인 만들기
메뉴얼 작성전 읽기
More
Share
Explore
애플리케이션 확장하기
블로그 게시글이 각 페이지마다 보이게 만들어봅시다!
Post에 템플릿 링크 만들기
blog/templates/blog/post_list.html
파일에 링크를 추가하는 것부터 시작합시다. 아래와 같이 보일 거에요. :
blog/templates/blog/post_list.html
{% extends 'blog/base.html' %}
{% block content %}
{% for post in posts %}
<div class="post">
<div class="date">
{{ post.published_date }}
</div>
<h1><a href="">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaksbr }}</p>
</div>
{% endfor %}
{% endblock %}
post
제목 목록이 보이고 해당 링크를 클릭하면,
post
상세 페이지로 이동하게 만들어 볼 거에요.
<h1><a href="">{{ post.title }}</a></h1>
부분을 수정해 봅시다.
blog/templates/blog/post_list.html
<h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
{% url 'post_detail' pk=post.pk %}
을 설명할 때가 왔군요!
{% %}
는 장고 템플릿 태그을 말합니다.
blog.views.post_detail
는
post_detail
뷰
경로입니다.
views
는
views.py
파일명이에요.
마지막 부분
post_detail
는
view
이름입니다.
pk = post.pk
이란 무엇일까요?
pk
는 데이터베이스의 각 레코드를 식별하는 기본키(Prmiary Key)의 줄임말 입니다.
Post 모델에서 기본키를 지정하지 않았기 때문에 장고는
pk
라는 필드를 추가해 새로운 블로그 게시물이 추가될 때마다 그 값이 1,2,3 등으로 증가하게 됩니다.
아직 post_detail 뷰를 만들지 않아 오류가 날거에요!
Post 상세 페이지 URL 만들
post_detail
뷰
가 보이게
urls.py
에 URL를 만들어 봅시다!
첫 게시물의 상세 페이지
URL
이
http://127.0.0.1:8000/post/1/가
되게 만들 거에요.
blog/urls.py
파일에 URL을 만들어, 장고가
post_detail
뷰
로 보내, 게시글이 보일 수 있게 해봅시다.
path('post/<int:pk>/', views.post_detail, name='post_detail')
코드를
blog/urls.py
파일에 추가하면 아래와 같이 보일 거에요.
blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
]
여기서
post/<int:pk/>/
는 URL 패턴을 나타내요.
이제 뷰를 추가해볼거에요!
Post 상세 페이지 내 뷰 추가하기
뷰
에 매개변수
pk
를 추가해봅시다.
뷰
가
pk
를 식별해야겠죠? 그래서 함수를
def post_detail(request, pk):
라고 정의합니다.
urls(
pk
)과 동일하게 이름을 사용해야 합니다. 변수가 생략되면 오류가 날 거예요!
이제
views.py
파일에 새로운
뷰
를 추가합시다!
blog/views.py
파일을 열고,
from
으로 시작하는 행에서 다음과 같이 코드를 추가해주세요. :
blog/views.py
from django.shortcuts import render, get_object_or_404
그리고, 파일 마지막 부분에
뷰
를 추가하세요.
blog/views.py
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
이제 잘 나올거에요!
그런데 블로그 제목 링크를 클릭하면 어떻게 되나요?
이제 템플릿을 추가할 차례에요!
Post 상세 페이지 템플릿 만들
blog/templates/blog
디렉터리 안에
post_detail.html
라는 새 파일을 생성하고 아래와 같이 코드를 작성하세요.
blog/templates/blog/post_detail.html
{% extends 'blog/base.html' %}
{% block content %}
<div class="post">
{% if post.published_date %}
<div class="date">
{{ post.published_date }}
</div>
{% endif %}
<h1>{{ post.title }}</h1>
<p>{{ post.text|linebreaksbr }}</p>
</div>
{% endblock %}
다시 한 번
base.html
을 확장한 거에요.
가장 중요한 부분은
{% if ... %} ... {% endif %}
라는 템플릿 태그인데, 내용이 있는지 확인할 때 사용합니다.
content
블록에서 블로그 글의 게시일, 제목과 내용을 보이게 만들었어요.
post
의
게시일(published_date)
이 있는지, 없는지를 확인하는 거에요.
이제 페이지를 새로고침하면
페이지 찾을 수 없음(Page not found)
페이지가 없어졌어요!
잘 돌아가네요!
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
Ctrl
P
) instead.