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이 데이터를 뷰에 넣기 매우 편리한거같다.
'백엔드' 카테고리의 다른 글
<장고> Super Users, Staff Users & the Django Admin (0) | 2022.05.17 |
---|---|
<장고 django> Dynamic URL Routing, 동적 url 라우팅하기 (0) | 2022.05.17 |
<장고 Django> 장고 강의 추천3, 18강 뷰에서 데이터를 리스트로 표현하기 (0) | 2022.05.16 |
<django 공부> django 장고 강의 추천 (0) | 2022.05.16 |
erd 다이어그램 그리기 좋은 도구, 데이터베이스 모델링 (0) | 2021.10.23 |