Post 템플릿 링크 설정
blog/templates/blog/post_list.html
- <a>수정
<h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
blog.views.post_detail
- 뷰 경로
- blog : 프로그램 이름(디렉터리)
- views : views.py 파일명
- post_datail : view 이름
pk = post.pk
- pk : 데이터베이스의 각 레코드를 식별하는 기본키(Primary Key)
- post.pk : 로 기본키에 접근
Post 상세 페이지 URL
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/ / : URL이 post문자를 포함해야 함
- <int:pk> : 정수 값으로 pk 라는 변수로 뷰에 전송해야함
ex :
http://127.0.0.1:8000/post/7/
: post_detail 뷰를 찾아 매개변수 pk가 7인 값을 찾아 뷰로 전달함
Post 상세 페이지 내 뷰 추가
- 뷰에 매개변수 pk 추가
from django.shortcuts import render, get_object_or_404
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
뷰가 pk를 식별해야 하기 때문에 함수 def post_detail(request,pk): 라고 정의 하는 것
Post 상세 페이지 템플릿
blog/templates/blog/post_detail.html
- 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 %}
{% if ... %} ... {% endif %} : 템플릿 내용이 있는지 확인
https://tutorial.djangogirls.org/ko/extend_your_application/
'Languages > Python' 카테고리의 다른 글
[Python] anaconda3 jupyter notebook error (0) | 2020.09.02 |
---|---|
[Django] form - Djangogirls (0) | 2020.07.31 |
[Django] Template extending - Djangogirls (0) | 2020.07.31 |
[Django] templates 꾸미기 - Djangogirls (0) | 2020.07.30 |
[Django] Template tags - Djangogirls (0) | 2020.07.30 |