백엔드

<장고 django> 초보자 장고 강의 추천, 장고 뷰 템플릿 사용, 장고 데이터베이스인 모델 사용하기, 장고 app 추가로 만들기

studying develop 2022. 5. 16. 21:47

https://www.youtube.com/watch?v=4uNeO5Hw9FE&list=PLEsfXFp6DpzRMby_cSoWTFw8zaMdTEXgL&index=18 

 

python manage.py startapp articles

위 명령어를 통해 project안에 app을 따로 만들 수 있다. 이미 lib파일을 보면 django라는 이름의 기본 앱이 이미 있음. 그 앱안에 admin 기능들이 있음.

 

setting.py 파일을 보면 다양한 세팅이 가능한데

db에 대한 설정도 여기서 가능하다. 

 

그리고 view를 그리기 위해 장고 템플릿을 사용하는데 render_to_string을 통해서 장고 뷰 템플릿에 데이터를 넣는다.

 

데이터베이스는 models를 통해서 생성한다.

from django.db import models

# Create your models here.
class Article(models.Model):
    title = models.TextField()
    content = models.TextField()

이 경우 articles라는 앱을 새로 만들었다. 이 앱을 본 프로젝트에서 사용하기 위해서는 INSTALLED_APPS에 추가해줘야한다.

앱 생성은 python manage.py startapp articles로 생성했다.

# Application definition
# python manage.py makemigrations
# python manage.py migrate
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'articles',
]

 

 

pip install dataclasses로 다운받고

python manage.py shell에서 @dataclass로 위와 마찬가지로 생성해서 사용했었다.

 

디비 모델을 수정하면 

python manger.py makemigrations

python manager.py migrate

위 두 명령어를 쳐서 변경사항을 반영해줘야한다. 그러면 migrations 폴더에 변경사항이 버전별로 있음.

 

{% extends "base.html" %}

{% block content %}
<h1>{{ object.title }} (id: {{ id }}!)</h1>
<p>{{ content }}!</p>
{% endblock content %}

이건 home-view.html 파일이지만, base.html 파일로 불러올 수 있는 방법이다.

home-view.html 파일을 base.html 파일로 가져와 사용할 수 있다.

그리고 html안에서 장고에서 넘겨준 데이터를 사용하려면 doule bracket {{}} 안에 사용해야 한다. 

참고로 주로 띄어쓴다고 데이터를 그 사이에서 {{ data }} 인셈.

object도 넘어가는 점이 특이하다.

 

 

<!DOCTYPE html>
<html>
    <head>
    </head>

    <body>
        {% block content %}
        {% endblock content %}
    </body>
</html>

이러면 

{% block content %}

{% endblock content %} 사이로 home-view.html에서 정해준 블럭, 앤드블럭이 불러와진다.

    HTML_STRING = render_to_string("home-view.html", context=context)

    return HttpResponse(HTML_STRING)

장고의 뷰템플릿을 사용하면 context만 넘겨줘도 뷰가 그려져서 편리하다, 데이터로 뷰 렌더하는셈 말 그대로.

 

그리고 참고로 장고 뷰템플릿을 위처럼 절대 경로 없이 사용하기 위해서는 setting.py의 DIRS에 추가해줘야 한다.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            BASE_DIR /"trydjango"/"templates",
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 

아 또 알게된게 python manage.py를 입력하면 실행 가능한 명령어들이 나온다는거? ㅎㅎ


17강에서 마지막에 정리해줬는데, 장고는 뷰, 모델, 템플릿 시스템이다 mvt라 함

이 mvt의 장점이 뭘까 재밌는듯 ㅎㅎ template이 데이터를 뷰에 넣기 매우 편리한거같다.