일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 웹페이지제작
- path converter
- 템플릿변수
- DjangoModel
- CRUD
- 장고어드민
- DjangoAdmin
- 쿼리셋
- namespace
- 장고수정기능
- 장고
- 템플릿태그
- queryset
- 장고모델
- modelform
- 글쓰기기능
- Python
- 템플릿필터
- 파이썬
- DjangoUsers
- 장고로그인회원가입
- extends
- 모델폼
- 장고유저모델
- 검색기능
- detail page 만들기
- get object or 404
- django
- 템플릿상속
- 랜덤번호
Archives
- Today
- Total
하루에는
[Django]장고 path-converter, get object or 404 장고로 게시물 상세페이지 만들기 본문
Python, Django
[Django]장고 path-converter, get object or 404 장고로 게시물 상세페이지 만들기
에는 2019. 11. 28. 17:47Overview
- get object or 404
- path-converter
- post의 detail page 만들기
path-converter
-
path-converter : <type:name>과 같은 모양으로 작성
-
지정한 타입의 name 변수를 view 함수로 넘기는 역할을 합니다.
from django.contrib import admin
from django.urls import path
import picker.views
import post.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', picker.views.pick, name='pick'),
path('list/', post.views.postlist, name='postlist'),
path('show/<int:post_id>', post.views.show, name='show'),
]
위의 <int:post_id>가 path-converter에 해당합니다.
path converter
- 여러 객체들을 다루는 계층적인 url을 자동으로 쉽고 편하게 생성 가능
- 몇 번째 post 객체를 호출하는지에 따라 url을 달리 하는 것
- type을 지정하지 않으면 기본적으로 str으로 인식
get_object_or_404
view 설정
from django.shortcuts import render, get_object_or_404
from .models import Post
# Create your views here.
def postlist(request):
posts = Post.objects.all()
return render(request, 'postlist.html', {'posts': posts})
def show(request, post_id):
post = get_object_or_404(Post, pk=post_id)
return render(request, 'show.html', {'post': post})
- show 함수를 실행할 때, path-converter를 인자로 받는다.
- post 변수는 Post DB에서 pk가 post_id에 해당하는 객체를 가져온다.
- 해당하는 객체가 없을 경우 404 에러를 띄운다.
templates 설정
<a href="{% url 'postlist' %}">목록으로 이동</a>
<h1>제목: {{post.title}}</h1>
{{post.created_at}}<br/>
{{post.content|linebreaks}}
- a 태그의 href 속성값은 템플릿 태그로 적어줍니다. {% url 'pathname' %}과 같은 형식으로 적습니다.
- linebreaks는 템플릿 변수 필터입니다. 엔터를 반영해서 보여줍니다.
서버를 돌리고, 도메인 뒤에 show/1을 붙이면 첫 번째 게시물의 제목, 내용이 뜹니다.
postlist.html도 수정해보겠습니다.
<h1>등록된 글</h1>
{% for post in posts %}
<a href="{% url 'show' post.id %}">{{ post.title }}</a>
<br/>
{% endfor %}
- 'show' path로 이동하되, path-converter에 post의 id값을 전달
서버 run한 모습
'Python, Django' 카테고리의 다른 글
[Django]장고 Users(유저) 모델 (0) | 2019.12.10 |
---|---|
[Django]장고 템플릿 상속, url정리 네임스페이스 namespace (0) | 2019.11.29 |
[Django]장고 쿼리셋으로 검색기능 구현하기 (0) | 2019.11.28 |
[Django]장고 Model, admin, Queryset (0) | 2019.11.27 |
[Django]템플릿 변수, 필터, 태그 (0) | 2019.11.27 |
Comments