python django 게시판 만들기 - detail page 만들기
model, admin 설정 : https://integer-ji.tistory.com/89
views에 데이터 가져오기 : https://integer-ji.tistory.com/90
언제나 시작은 가상 환경 실행, 디렉터리 이동
source myvenv/Scripts/activate
cd crudproject/
새로운 페이지.html 생성하는 방법
html을 만들면 해야할것 3가지
1. templates 폴더 안에 html파일 만들기
2. views.py에 함수 설정하기
3. urls.py url 만들기
crudapp/templates/detail.html 만들기
views.py detail 함수 설정
from django.shortcuts import render, get_object_or_404
from .models import Blog
# Create your views here.
def home(request):
blogs = Blog.objects
return render(request, 'home.html', {'blogs': blogs})
def detail(request, blog_id):
blog_detail = get_object_or_404(Blog, pk=blog_id)
return render(request, 'detail.html', {'blog': blog_detail})
def new(request):
full_text = request.GET['fulltext']
word_list = full_text.split()
word_dictionary = {}
for word in word_list:
if word in word_dictionary:
# Increase
word_dictionary[word] += 1
else:
# add to the dictionary
word_dictionary[word] = 1
return render(request, 'new.html', {'fulltext': full_text, 'total': len(word_list), 'dictionary': word_dictionary.items()} )
detail을 이용해 모든 게시물을 불러와야 합니다.
그렇다면 1번째 게시물이라면 detail/1이고 100번이라면 detail/100일 텐데
이걸 수동으로 입력하지 않고 pk(프라이머리 키)를 이용해 Blog의 blog_id를 가져옵니다.
blog_id는 글이 생기면 장고에서 저절로 부여하는 고유 번호입니다.
urls.py url 설정하기
from django.contrib import admin
from django.urls import path
import crudapp.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', crudapp.views.home, name='home'),
path('new/', crudapp.views.new, name='new'),
path('detail/<int:biog_id>', crudapp.views.detail, name='detail'),
]
blog_id는 인자라 불리며 게시글의 고윳값, views.py에서 설정한 pk를 넘깁니다.
1번째 게시물을 누르면 주소는 detail/1이고 두 번째는 detail/2가 됩니다.
detail url html에 넣기
detail page가 잘 나오게 되었네요
주소창을 보면 detail/1인걸 볼 수 있습니다.
안에 내용을 넣어봅시다.
<h1>detail page</h1>
<h1>{{ blog.title }}</h1>
<p>{{ blog.pub_date }}</p>
<p>{{ blog.body }}</p>
<a href="{% url 'home' %}">돌아가기</a>
첫 페이지도 잘 나오고
두번째 글도 잘 나옵니다.
detail 페이지에서는 blogs란 모든 blog객체를 가져오는 것이 아니기 때문에
해당 pk(blog_id)의 타이틀과 시간 본문만 가져오면 되는것입니다.
git push
git init
git add .
git commit -m "코멘트"
git push origin master
- 끝 -
---
CRUD 프로젝트에서 R, read를 끝냈습니다.
다음 시간에는 게시판을 만들기 위한 좀 더 세밀한 부분을 작업하는 시간을 갖겠습니다.
목록 : 시간 양식 바꾸기, 정렬 바꾸기, 첫 화면에 본문 대신 요약 출력하기
'코딩공부 > Python Django' 카테고리의 다른 글
[django 실습] 게시판 만들기 - getbootstrap으로 홈페이지 꾸미기 (2) | 2020.02.21 |
---|---|
[django 실습] 게시판 만들기 - 한글 설정, 한국 시간 설정, 데이터 자르기, 정렬하기 (0) | 2020.02.19 |
[django 실습] 게시판 만들기 - views에 데이터 가져오기 (0) | 2020.02.18 |
[django 실습] 게시판 만들기 - model, admin 설정 (0) | 2020.02.16 |
[django 실습] Word Count 만들기 ( 2 ) (2) | 2020.02.15 |