일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MSSQL
- advColumnGrid
- 델파이
- python3
- rank
- queryset
- github
- Visual Studio
- c#
- pyhcarm
- python 3.7
- TMS
- pythonanywhere
- HTML
- GIT
- blog
- Push
- 중복제거
- get_object_or_404
- dbadvgrid
- declare
- Delphi
- Django
- templates
- PyCharm
- delphi 10.3
- COMMIT
- hackerrank
- anaconda3
- 백준
- Today
- Total
DevHyun
[DevHyun's Blog] Django&Python으로 만든 Blog App 확장(extending)하기 본문
[DevHyun's Blog] Django&Python으로 만든 Blog App 확장(extending)하기
D3V3L0P3R 2020. 10. 19. 19:38장고걸스 코치들과 자원봉사자들의 수고로 번역된 글을 참고하였습니다.
Template을 확장하였으니 Blog App 자체도 확장해보겠습니다~!
1. Post에 Template 링크 추가하기
*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 %}
2. Title을 보여주고 Title을 클릭하면 Post의 상세페이지로 이동하는 기능 추가하기
*Blog/templates/Blog/post_list.html
* {% %}는 장고 템플릿 태그
* post_detail의 view 경로
* view.py에서 정의된 함수 명(post_detial)
* pk라는 필드를 추가해 새로운 Post가 추가될 때마다 그 값이 1,2,3 으로 증가
... .. . <div class="post"> ... .. . <h1><a href="{% url 'post_detail' pk=post.pk %}"> {{ post.title }} </a> </h1> ... .. . </div> ... .. . |
3. Run - > NoReverseMatch at / Reverse for 'post_detail' with arguments '()' and keyword arguments {'pk' :"}' not found Error 발생
* Post_detail view를 만들지 않아서 발생하는 Error
4. blog/urls.py파일에 URL을 만들어, Django가 post_detail 뷰로 보내, 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/란 URL이 post 문자를 포함해야 한다는 의미.
* <int:pk> 뜻은 정수(int) 값을 기대하고 이를 pk라는 변수로 view로 전송하는 것을 의미.
* /은 다음에 / 가 한 번 더 와야 한다는 의미.
* 브라우저에 http://127.0.0.1:8000/post/5/라고 입력하면, Django는 post_detail view를 찾아 매개변수 pk가 5인 값을 찾아 view로 전달.
5. Run -> AttributeError at / 'module' object has no attribute 'post_detial' Error 발생
* View가 추가되지 않았고 View에 매개변수 pk를 추가해야 함.
Post.objects.get(pk=pk) |
6. DoesNotExist at /post/10/ Post matching query does not exist Error 발생 할 수 있음
* 해당 primary key(pk)의 Post를 찾지 못할 때 발생
7. views.py 파일에 Django에서 제공하는 get_object_or_404 기능 추가
*pk에 해당하는 Post가 없을 경우, 페이지 찾을 수 없음 404 : Page Not Found 404를 보여주는 기능.
*Blog/views.py
from django.utils import timezone
...
..
.
from django.shortcuts import render, get_object_or_404
def post_list(request):
...
..
.
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'Blog/post_detail.html', {'post': post})
8. run-> TemplateDoesNotExist at /post/3/ blog/post_detail.html Error 발생
* post_detail.html Template 파일이 없어서 발생하는 Error!
9. Post_detail.html tamplate 생성
*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 %}
10. run -> commit -> push
11. pythonanywhere 에서 재배포 하기
12. devhyun.pythonanywhere.com/
완-벽
'Web > Django&Python Blog Projecct' 카테고리의 다른 글
[DevHyun's Blog] Django Form 만들기(일반 사용자가 Post 수정 가능하게 만들기) (0) | 2020.10.21 |
---|---|
[DevHyun's Blog] Django Form 만들기(일반 사용자가 Post 추가 가능하게 만들기) (0) | 2020.10.21 |
[DevHyun's Blog] Django Template 확장하기(*재사용 가능하게끔 만들기) (0) | 2020.10.19 |
[DevHyun's Blog] Django&Python으로 만든 Blog에 CSS 적용하기! (0) | 2020.10.19 |
[DevHyun's Blog] Django Template 활용하기 (0) | 2020.10.19 |