Back-end/Django

[HUFS/HUFStudy] #3 Model/Admin, Queryset/Method

성중 2021. 7. 14. 22:47

Model & Admin 이론

Django의 MTV 패턴은 이런 식으로 작동했다

Model에 어떻게 데이터를 담으며, 어떻게 View로 넘기고 화면에 띄우는지 알아보자!

 

비어 있는 models.py에 처리할 데이터 종류를 클래스로 정리해주면 된다
데이터의 형식을 정리해 Model에 클래스로 정의하는 것
대충 이런 구조..

데이터베이스는 장고와 별개로 존재하며 여러 개가 있을 수도 있다!
* 기본으로 SQLite, 추가로 PostgreSQL, MySQL 등.. / settings.py에서 등록

따라서 models.py와 데이터베이스를 연동하는 작업이 필요한데, 이때 입력하는 명령어는,,

 

migration 파일을 만들고, 데이터베이스에 적용
/admin 주소에 접근할 수 있는 Admin 계정을 만드는 명령어
정리하면 이렇다

Model & Admin 실습

새로운 프로젝트를 만들고 blog 앱을 생성한 후 settings.py에 연결까지 해주자

이제 저장될 데이터 형식을 blog 앱에 있는 models.py에 작성해주자

from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    body = models.TextField()

    def __str__(self):
        return self.title # 글 제목이 타이틀로 보이도록

이 형식을 DB에 연결 하려면,,

 

settings.py 의 DATABASES에는 기본으로 SQLite가 지정되어 있는데 변경이 가능하다
연동하는 명령어들을 입력
Admin 계정을 생성하는 명령어를 입력

이제 서버를 실행하고 /admin 페이지로 접속해보자

 

이 페이지에서 Djano 프로젝트 전체의 데이터를 관리할 수 있다

여기에 아까 정의한 Blog 데이터 형식을 추가하려면,,

from django.contrib import admin
from .models import Blog

admin.site.register(Blog)

앱의 admin.py에 Blog 클래스를 추가해야 한다

 

Blog가 생겼다!
지정했던 형식대로 데이터를 Add할 수 있다

Queryset & Method

Model의 데이터가 template에 출력되려면 항상 views.py를 거쳐야 한다!

from django.shortcuts import render
from .models import Blog

def home(request):
    blogs = Blog.objects #쿼리셋 -> 모델의 Blog 객체 목록을 변수에 저장
    return render(request, 'home.html', {'blogs': blogs})

views.py에 models.py의 Blog 객체 목록(쿼리셋)을 받고 home.html을 띄우도록 코드 작성

 

templates 폴더와 그 안에 home.html 파일을 만들고 url.py에 연결해주자

쿼리셋을 활용해 데이터베이스 기능을 정렬 및 처리해주는 방법이 메소드
즉, 메소드를 활용해 데이터를 home.html 파일에 띄우는 방식은 다음과 같다

{% for blog in blogs.all%}
    <h1>{{blog.title}}</h1>
    <p>{{blog.pub_date}}</p>
    <p>{{blog.body}}</p>
    <br><br>
{%endfor%}

<!--
    쿼리셋과 메소드의 형식
    모델.쿼리셋(objects).메소드

    즉, 'blogs.all' = 'Blog.objects.all' 
    * all은 해당 쿼리셋의 데이터를 모두 지칭하는 메소드
!-->

for 탬플릿 태그로 blog.all을 순회하면서 blog 변수에 넣고 model의 변수 하나하나를 출력하는 것이다

 

/admin 페이지에서 작성한 Blog 글이 띄워진다!

Bootstrap

부트스트랩(Bootstrap)은 트위터 개발자들이 만든 CSS/JS 기반 오픈소스 웹 프레임워크이다
무료이며 모든 브라우저 호환, 반응형 웹이 자동으로 지원된다!
다만 양산형 디자인이 될 수 있으며 최적화된 디자인에 비해 성능이 떨어질 수 있다

 

Bootstrap

The most popular HTML, CSS, and JS library in the world.

getbootstrap.com

CDN을 통해 부트스트랩의 디자인 요소와 템플릿을 가져와보자

 

두 링크를 html 파일의 head에 넣어주면 된다

이제 부트스트랩 Docs의 모든 요소를 사용(복붙)할 수 있다!

 

Nav, password form, button 등 다양한 요소를 갖다 넣었다

요소 하나하나 말고 웹페이지 디자인 전체를 적용하려면 Examples 탭에서,,

 

원하는 템플릿을 선택하고 '우클릭 -> 페이지 소스 보기 -> 전체 or 원하는 부분 복붙, 수정'
구글에 'free bootstrap template'을 검색하면 더 다양한 템플릿들을 볼 수 있다


본 내용은 멋쟁이사자처럼의 '9기 운영진 교육'을 바탕으로 작성되었습니다.