SQLite
, PostgreSQL
, MySQL
, Oracle
, MariaDB
를 지원해줍니다.)1) Django 앱이란?
프로젝트를 기능 단위로 쪼갠 덩어리입니다. 하나의 프로젝트 안에는 하나의 웹사이트를 구성하는 여러 앱이 존재할 수 있습니다.
blogPosts
라는 앱을 만들어 봅시다.(.venv) > django-admin startapp blogPosts
그 후
프로젝트 이름/settings.py
에 blogPosts 라는 앱을 사용할 것이라고 알려주어야 하므로 다음과 같이 작성!# setting.py 에서 ... INSTALLED_APPS = [ ... 'blogPosts.apps.BlogpostsConfig`, # 줄여서 blogPosts라고 적어도 됨 ]
위 사진과 같이 blogPosts/templates/blogPosts 안에 index.html 파일을 만든다.
????? 너무 번거롭지 않나 ?????
그냥 blogPosts/templates/index.html로 하면 안되나요?????
그러나 이것은 좋은 생각이 아닙니다. Django는 프로젝트 내에서 template을 찾을 때 이름이 일치하는 첫번째 template을 선택합니다. 그렇기 때문에 만약 index.html이라는 template이 여러 개의 app에 존재한다면 우리가 원했던 app이 아닌 다른 app의 index.html이 선택될 수 있겠죠.
Django 에게 내가 원하는 정확한 template 을 지정하기 위해서 가장 편리한 방법은 이름공간으로 한번 더 구분짓는 것인데, 어플리케이션의 이름으로 된 디렉토리에 이러한 template 들을 넣으면 됩니다. Django 공식문서 - 템플릿 네임스페이싱
index.html
을 보여달라는 요청을 하고 싶으면 view를 만들어야 한다!# blogPosts/views.py
...
def index(request):
return render(request, 'blogPosts/index.html')
url : 경로와 view를 연결
최종적으로 유저가 index.html
파일을 볼 수 있는 url을 작성해야 함!
urls.py에서는 유저가 요청을 보낸 주소와 views.py에서 작성한 함수를 연결해주는 역할을 합니다.
# 프로젝트명/urls.py
...
from django.contrib import admin
from django.urls import path
import blogPosts(앱이름).views # 추가
urlpatterns = [
...
path(''(기본경로라는 뜻), blogPosts(앱이름).views.index, name='index'), <<< 이부분 추가!
]
<a></a>
)등을 활용한 다른 경로, 즉 url로의 요청