Development/Django(멋쟁이사자처럼 7기 운영진)

[멋사7기] 4.5주차 - 템플릿 상속, url 관리

안다희 2019. 2. 3. 04:44
728x90

템플릿 상속 : 복붙 줄이기




1) 프로젝트 폴더에 templates 만들기 (app에 만든거랑 다른것이다!!!!!!!!!!) (settings.py in project있는 위치에!)

2) templates 안에 base.html 만들기

3) settings.py에 알려주기 우리가 만든 templates이니까

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['blogproject/templates'],


주의!!!!! 내가 만든 프로젝트의 이름 쓰기

나는 week4_blog_project라고 써야해


4) base.html


<!-- 중복 코드 -->

여기에 컨텐츠가 올 예정입니다
{% block contents %} //sidebar title 다양한걸 쓸 수 있다. 걍 이름

{% endblock %}


코드를 써놓고 컨텐츠가 올 곳에 방석을 깔아둔다고 생각하면 됨.

contents는 걍 이름임. '다희'라는 애가 여기올 것이니 '다희'가 오면 이 방석에 앉혀라!

<body> 이런 태그 위치 잘 선정~


5) home.html

{% extends 'base.html' %} <!-- 모든 태그에 비해서 우선순위가 높은 extends 태그! -->
{% block contents %}

~~~~

{% endblock %}


============================================================================================

URL의 효율적 관리



여러가지 앱의 URL을 한 프로젝트의 urls.py에서 관리하니 비효율적!

각 앱의 urls.py에서 관리하자~


1) blogapp 안에 urls.py 파일 만들기

2) urls.py in blogapp

from django.contrib import admin
from django.urls import path
# import blog.views, portfolio.views # 아래와 같음
from . import views

urlpatterns = [
path('<int:blog_id>', views.detail, name="detail"),
path('new', views.new, name="new"),
path('create', views.create, name="create"),
]


원래 blog/new 였는데 걍 new로, 3)에서 blog/를 해줬기 때문!

blog.views.new였는데 걍 views.new

느낌알지?



3) urls.py in project

from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', blog.views.home, name='home'),
path('blog/', include('blog.urls')),
path('portfolio/', portfolio.views.portfolio, name="portfolio"),
]

app 이름이 blogapp이면 blogapp.urls라고 적어야함. (당연한 소리)

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]