Create : 생성하다
Read : 읽다
Update : 수정하다
Delete : 삭제하다
데이터베이스의 정보를 CRUD 하는 것
→ 웹 애플리케이션 위에 구현을 직접 할 예정 ⇒ CRUD 기술 구현 쪽
blog 폴더에 templates 폴더 생성, home.html 파일 생성
from .models import Blog
def home(request):
blogs = Blog.objects.all()
return render(request, 'home.html', {'blogs':blogs})
Python
복사
from .models import Blog : 데이터베이스에서 데이터 가져옴
blogs = Blog.objects.all()
Blog 테이블에 있는 객체들을 다 가져와서 blogs 에 저장
return render(request, 'home.html', {'blogs':blogs})
blogs 변수를 home.html 이랑 같이 보냄, blogs 라는 키값에 들어있는 blogs 를 보냄
from blog.views import *
path('', home, name="home"),
Python
복사
—> home.html 에 다음 코드 작성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width", initial-scale=1.0>
<title>BLOG</title>
</head>
<body>
<h1>Blog Project</h1>
{{blogs}}
</body>
</html>
Python
복사
body 에 {{blogs}} 넣어서 blogs 의 전문을 가져옴
⇒ QuerySet : 전달받은 모델의 객체 목록
→ QuerySet 의 형태로 blogs 에 담겨옴
...
{% for blog in blogs %}
{{blogs}}
{% endfor %}
Python
복사
{{blogs}} 의 위 아래에 다음 추가시 객체 하나하나를 for 문을 통해 바꿈
def __str__(self):
return self.title
때문에 제목만 뜸
ctrl + ? : 자동 주석처리
{{blog.title}}
{{blog.writer}}
{{blog.body}}
넣으면 쿼리셋 사라짐
< 꾸미기 >
•
스타일로 텍스트 중간 정렬 (<head> 안 작성)
→ 자식 태그들을 부모 태그 기준으로
<style>
body{text-align: center;}
</style>
HTML
복사
•
본문 꾸미기
→ 제목 크기 조절 등
<div class="container">
{% for blog in blogs %}
<div>
<!-- {{blogs}} -->
<h3>{{blog.title}}</h3>
{{blog.writer}}
{{blog.body}}
</div>
{% endfor %}
</div>
HTML
복사
•
본문 100자 잘라서 보여주기
→ python 에 슬라이싱
... 리스트나 스트링을 100번째 인덱스까지 자름
def summary(self):
return self.body[:100]
Python
복사
models.py 에 위 코드 작성
{{blog.summary}}
HTML
복사
home.html 에 {{blog.body}} 를 위와 같이 바꿈
Path-converter
⇒ Primary Key
: row 의 값들을 하나하나 식별을 하기 위한 ID 값
def detail(request, id):
# blog = Blog.objects.get(id = id)
blog = get_object_or_404(Blog, pk = id)
return render(request, 'detail.html', {'blog':blog})
Python
복사
주석 처리된 부분도 가능,,,(?)
from django.shortcuts import render, get_object_or_404 로 최상단 부분 바꿈
path('<str:id>', detail, name="detail"),
Python
복사
데이터베이스의 id 값 / 기본 문법 : <str(자료형): id(매개변수명)> / views.py 에서 만든 함수 이름 detail 을 두번째 인자로 / 접근하게하는 name 도 설정
<br> 도 추가
—> detail.html 에 다음 코드 작성 ... html:5 하면 기본 세팅
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Detail</title>
<style>
body{text-align: center;}
</style>
</head>
<body>
<h1>{{blog.title}}</h1>
<div>
작성자:{{blog.writer}}
<br>
날짜:{{blog.pub_date}}
</div>
<hr>
<p>{{blog.body}}</p>
</body>
</html>
HTML
복사