본문 바로가기
Django/Django note

[Django note] #2 내가 보려고 만드는 장고 노트 (템플릿 상속, url 계층적 관리)

by clean01 2020. 7. 16.

템플릿 상속

1. 프로젝트 폴더 안에 templates폴더를 만들고 그 안에 base.html 만들기

중복되는 내용도 채워넣기

 

2. settings.py에 base.html의 위치를 알려주기

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['프로젝트 이름/templates'],
        'APP_DIRS': True,
        ...

3. base.html에 내용이 들어갈 부분을 알려주기

{%block contents%}

{%endblock%}

#block contents에서 'contents'는 바꿔쓸 수 있다. (title, sidebar 등등..)

 

4. 내용에 해당하는 html로 가서

{%extends 'base.html%} #얘는 모든 태그들에 대해 우선순위가 가장 높다. 따라서 가장 위에 써주자.

{%block contents%}

...(내용)

{%endblock%}

 

URL의 계층적관리

1. 앱 폴더 안에 urls.py를 만들어주고 , admin과 path, views를 import

#app폴더안의 urls.py
from django.contrib import admin
from django.urls import path
from . import views

2. 계층적으로 관리할 url들을 ctrl+x, ctrl+v하고 간결하게

#프로젝트 폴더 안에 있는 urls.py에 있던 얘네를
urlpatterns = [
	...
	path('blog/<int:blog_id>/', blogapp.views.detail, name="detail"),
    	path('blog/new/', blogapp.views.new, name="new"),
    	path('blog/create/', blogapp.views.create, name="creage"),
    	...
    ]
#앱 안의 urls.py
urlpatterns = [
	...
	path('<int:blog_id>/', views.detail, name="detail"),
    	path('new/', views.new, name="new"),
    	path('create/', views.create, name="creage"),
    	...
    ]

3. 프로젝트 폴더 안 urls.py에 blogapp.urls를 include

from django.contrib import admin
from django.urls import path, include #include를 꼭 import 해줘야한다!

...

urlpatterns = [
	...
        path('blog/', include('blogapp.urls')),
        ...
    ]

콤마(,) 빼먹지 않게 조심!