본문 바로가기
Languages/Python

[Django] 애플리케이션 확장 - Djangogrils

by 김크롱 2020. 7. 31.

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/

 

애플리케이션 확장하기 · HonKit

프로그램 애플리케이션 확장하기 지금까지 웹 사이트 제작 단계를 모두 마쳤어요. 모델, url, 뷰와 템플릿을 만드는 방법을 알게 되었고요. 웹 사이트를 예쁘게 꾸미는 방법도 알게 되었어요. 이�

tutorial.djangogirls.org