템플릿 상속
여태까지 만든 페이지를 보자.
링크를 이동 할 때 하나하나 다 수정을 해줘야 했다.
예를 들어서 글쓰기 라는 링크를 추가해주려면
home.html , detail.html 등등 여러개의 웹페이지에 하나하나 링크를 연결해줘야했다.
하지만 이 파일이 여러개라면? 여간 귀찮은 일이 아닐수 없다.
이를 위해서 템플릿 상속이라는 것을 사용 해야 한다.
프로젝트 폴더에 templates폴더를 만들고 base.html을 만들자(html파일 이름은 마음대로 해도 된다)
이 폴더는 우리가 임의로 만든 것이니 settings.py에 가서
templates가 있는 부분을 보자.
'DIRS':[] 라고 되어 있을것이다.
이제 이 디렉토리에 base.html을 알려줘야 하는데 우리가 만든 base.html의 위치를 적으면 된다
project 폴더에 있는 templates에 base.html이 있다 라는 뜻으로 적어주면 된다.
'DIRS': ['project/templates'],
이제 이 base.html에 공통적으로 들어가는 부분을 구현해준다 (링크라던지, 네브바라던지)
이제 home.html에서 이를 사용하기 위해선 상속을 해야한다
제일 윗 부분에
xxxxxxxxxx
{% extends 'base.html'%}
{% block contents %}
# 이 사이에 내용을 넣으면 된다.
{% endblock %}
이런식으로 진행하면 매우 깔끔하게 진행 할 수 있다.
url 정리
앱 폴더가 여러가지 일 때 url을 보기 좋게 앱 폴더에 넣을수 있다.
이는 url을 유지보수 할 때도 편리하다.
앱 폴더에 urls.py를 만들고
urlpattenrs=[]라는 리스트를 만들어주고 프로젝트 폴더에 있는 urlpattern 처럼 작성하면 된다
원하는 path를 긁어서 urls.py에 넣고
blog앱에 urls.py를 만들었다 치면
프로젝트 폴더의 urls.py에는
path('blog/', include('blog.urls')), 라는 식으로 적으면 된다.
from django.contrib import admin
from django.urls import path, include
import blog.views
import portfolio.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', blog.views.home, name='home'),
path('blog/', include('blog.urls')),
path('portfolio/', portfolio.views.portfolio, name='portfolio'),
]
2번째 줄의 include를 import 해줘야 한다.
'Django' 카테고리의 다른 글
13. Paginator (0) | 2020.05.11 |
---|---|
12. 로그인,로그아웃,회원가입 (0) | 2020.05.11 |
10. static과 media (0) | 2020.03.25 |
09 BlogProject(2) (0) | 2020.03.23 |
08 BlogProject (1) (0) | 2020.03.23 |