📢 공지사항
home

CRUD - Read

번호
15
비고
21:36
주차
5월 둘째주
확인

Create : 생성하다

Read : 읽다

Update : 수정하다

Delete : 삭제하다

데이터베이스의 정보를 CRUD 하는 것
→ 웹 애플리케이션 위에 구현을 직접 할 예정 ⇒ CRUD 기술 구현 쪽
blog 폴더에 templates 폴더 생성, home.html 파일 생성
—> blog 폴더의 views.py 파일에 다음 코드 작성
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 를 보냄
—> urls.py 에 path 작성 (views.py 에 def 작성하면 urls.py 에 path 작성 기본)
from blog.views import * path('', home, name="home"),
Python
복사
두번째 인자가 views.py 의 함수, views.py 의 모든 함수를 가져온다는 문법, * 을 쓰면 views 에 있는 모든 것 사용 가능
—> 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 문을 통해 바꿈
models.py
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

url 로 path-converter 를 적어주면 아이디 값을 통해 페이지가 다르게 보여질 수 있고, views.py 에 있는 매개변수로 옮겨줄 수도 있음
⇒ Primary Key
: row 의 값들을 하나하나 식별을 하기 위한 ID 값
—> templates 에 detail.html 생성 후 views.py 에 다음 코드 작성
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 로 최상단 부분 바꿈
—> urls.py 에 path 추가
path('<str:id>', detail, name="detail"),
Python
복사
데이터베이스의 id 값 / 기본 문법 : <str(자료형): id(매개변수명)> / views.py 에서 만든 함수 이름 detail 을 두번째 인자로 / 접근하게하는 name 도 설정
column 접근, {{blog.id}}
detail 이라는 url 로 요청을 보냄, blog.id 도 보냄 <a href="{%url 'detail' blog.id %}">...more</a>
<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
복사