블로그 프로젝트 준비
source newvenv/Scripts/activate
django-admin startproject blogproject -> 장고 프로젝트 생성
앱 생성
python manage.py startapp blog
settings.py에 앱 등록 : blog.apps.BlogConfig
python manage.py createsuperuser
python manage.py runserver
-> admin 페이지 생성
컴퓨터 소프트웨어의 기본적인 데이터 처리 기능 : CRUD
C : create
R : read
U : update
D : delete
R : 데이터베이스에서 데이터를 가져와서 읽을 수 있도록!!
쿼리셋과 메소드 이용
쿼리셋 : 데이터베이스(models.py)로부터 데이터를 객체 형태로 받아오는 것
메소드 : 쿼리셋을 이용할 수 있도록 작성된 함수
Model : 데이터를 담는 그릇
그릇 이름 : 그릇에 담을 내용물의 데이터 타입
CharField는 글의 제목과 같은 비교적 짧은 문자열
DateTimeField는 날짜와 시간 데이터
TextField는 긴 문자열 처리할때 이용
ex)
class Blog(models.Model):
title = models.CharField(max_length = 200)
date = models.DateTimeField('date published')
body = models.TextField()
def __str__(self):
return self.title
models.py 수정한 이후에는 꼭 모델의 변경사항을 반영 migrate 해야한다
python manage.py makemigrations
python manage.py migrate
admin.py 들어가서 model 등록
from .models import Blog
#register your models here.
admin.site.register(Blog)
html은 쿼리셋을 출력하기 위해!!
template 폴더 만들고 그 안에 home.html 파일 만들어주기
views.py
from django.shortcuts import render
from .models import Blog
def home(request):
blogs = Blog.objects
return render(request, 'home.html', {'blogs':blogs})
blogs 쿼리셋은 home.html에 blogs라는 이름으로 전달된다
페이지 연결하기!!
urls.py
from django.contrib import admin
from django.urls import path
import blog.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', blog.views.home, name="home"),
]
blog 폴더의 views.py 파일 가져와서 views.py의 home함수를 실행시키고 home.html 파일 출력하라는 뜻
데이터 출력하기!!
views.py의 home함수에서 blogs라는 이름으로 데이터 쿼리셋 받아왔으므로
home.html에서 데이터 출력하려면 객체 묶음인 blogs 쿼리셋을 다시 쪼개서 하나하나 출력해줘야함
def home(request):
blogs = Blog.objects
return render(request, 'home.html', {'blogs': blogs})
blogs 쿼리셋(blogs.all)을 쪼갠 객체를 blog라고 하고
blog 객체의 제목 출력
blog 객체의 날짜 출력
blog 객체의 본문 출력
을 for 문이 끝날때까지 반복 -> 객체 다 출력될 때까지
{%for blog in blogs.all%}
{{blog.title}}
{{blog.date}}
<br> #이건 한줄 띄우기!
{{blog.body}}
{%endfor%}
디테일 페이지 만들기
models.py 의 Blog클래스 안에 body 일부분만 반환한느 summary 메소드 작성
데이터를 100글자까지만 반환
from turtle import title
from django.db import models
#create your models here.
class Blog(models.Model):
title = models.CharField(max_length = 200)
date = models.DateTimeField('date published')
body = models.TextField()
def__str__(self):
return self.title
def summary(self):
return self.body[:100]
home.html에서 {{blog.body}}를 {{blog.summary}}로 바꿔준다
views.py에서
from django.shortcuts import render get_object_or_404
from .models import Blog
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})
존재하지 않는 객체 요청했을때 404 에러창 띄우기
Blog 객체 중 blog_id에 해당하는 객체를 blog_detail 변수에 저장하고 detail.html에 blog라는 이름으로 전달하세요~!
urls.py에
path('blog/<int:blog_id>', blog.views.detail, name = "detail'), 추가해주기
home.html에
<a href = "{% url 'detail' blog.id%}">...more</a> 추가해서 디테일 페이지를 하이퍼링크로 연결
'멋쟁이 사자처럼 10기 > 세션' 카테고리의 다른 글
2022/05/13 <1:N & M:N 세션> (0) | 2022.06.07 |
---|---|
2022/05/06 <django Blog #2 세션> (0) | 2022.05.14 |
2022/04/08 <django 기초 세션> (0) | 2022.05.12 |
2022/04/05 <Git 세션> (0) | 2022.05.09 |
2022/04/01 <Python 세션> (0) | 2022.05.09 |