프로그래머스 Week5 - Day1~Day2 관련 Django 내용 정리
Django란?
Flask와 같은 웹 프레임워크의 일종이다.
Django의 구조(Model-View-Template Pattern)
Django는 여러개의 app을 활용하여 하나의 웹을 만들게 된다. app을 하나의 작은 페이지 단위라고 생각하면 이해하기 편하다.
전체적으로 관리해야 하는 것
- URL : 각 페이지의 역할을 정의한다. URL별로 어떤 template을 띄워줄 것인지 결정하게 된다.
- settings : 사용가능한 app의 목록, 템플릿 등을 지정한다.
각 앱마다 해야 할 것
- template : 각 페이지의 기본 모습을 관리한다. (html을 활용하여 작성하게 된다.)
- view : request에 대한 처리 필요, 데이터베이스를 여기서 관리한다.
- model : (2)편에서 다룰 예정.
Django의 (현재 배운 기준) 간단흐름
1. app을 생성한다. (diango-admin startapp <app_name>)
2. 해당 app에서 template 폴더를 생성한 후, html 문서를 만든다.
3. 해당 html문서에서 사용할 변수는 모두 해당 app의 view에서 정의한다.
example)
from django.shortcuts import HttpResponse, render
# Create your views here.
# request에 대한 처리가 필요
def index(request):
number = 10
name = "Michael"
nums = [1, 2, 3, 4, 5]
return render(request, 'index.html', {"my_num": number, "my_name": name, "my_list": nums})
4. html 문서가 완성되었으면, 메인부분의 url에서 url 링크를 지정한다.
from django.contrib import admin
from django.urls import path
from homepage.views import index
urlpatterns = [
# view에 대한 정보 추가.
path('', index), # 127.0.0.1/
path('admin/', admin.site.urls), # 127.0.0.1/admin/
]
5. settings에서, installed_app 부분에 app 이름 추가, template에서 DIRS를 추가한다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'homepage' # 장고 프로젝트에 설치된 앱 목록 추가 필요
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# 해당 부분에 template 접근 권한을 부여해야 한다.
os.path.join(BASE_DIR, "homepage", "template")
],
'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',
],
},
},
]
6. 실행 및 테스트는 python manage.py runserver를 입력하여 실시
'프로그래밍 언어' 카테고리의 다른 글
[TIL] 간단한 ML Serving 방법 / Flask (1) (0) | 2021.12.06 |
---|---|
[Python] Django로 웹 페이지 만들기 (2) (0) | 2021.05.15 |
[Python] Flask (2) Flask를 DB랑 연동하자! (0) | 2021.05.10 |
[Python] Flask (1) Flask란?, CRUD의 구현 (0) | 2021.05.07 |
[기본이론] defaultdict()의 활용법 (0) | 2021.04.29 |