<요약>

 

불편함의 해결1: html 파일 중복해결

  1. 프로젝트 폴더에 templates폴더 생성
  2. templates폴더에 base.html생성
  3. settings.py에 base.html위치 작성
  4. 겹치는 내용 삭제 후 base.html 사용

불편함의 해결2: url 정리

  1. 관리할 앱 폴더 내부에 urls.py생성
  2. urls.py에 path 작성
  3. 기존의 urls.py와 앱의 urls.py 연결

 

 

 


장고에서 무언가를 만든다면 여러 html 페이지를 만들게 된다. blog를 예로 들어보지.

우리가 블로그 메뉴인 navbar하나를 만들게 되면 모든 html페이지에 navbar를 중복 작성 해줘야한다. 

이는 매우 보기 싫고 귀찮다.  

 

새로 html만들때마다 중복되는 부분을 복붙해야한다  

 

 

이것을  해결하기 위해 겹치는 부분을  base.html로 따로 정리해서 사용해보겠다. 

 

 

 


불편함의 해결1: html 파일 중복해결

 

1. 프로젝트 폴더에 templates폴더 생성

 

그동안 templates 폴더는 앱폴더 안에서 만들었다. 이제 프로젝트폴더안에 template을 만든다. 

 

프로젝트 폴더 안에 만든다. 

 

 

2. templates폴더에 base.html생성

 

 

 

<head>
    중복되는 내용...
</head>

<body>
    중복되는 내용...

    {% block contents %}
    {% endblock %}
</body>

 

3. settings.py에 base.html위치 작성

 

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['blogproject/templates'],
        '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',
            ],
        },
    },
]

 

4. 겹치는 내용 삭제 후 base.html 사용

 

{% extends 'base.html' %}

{% block contents %}
<body>
    중복되지 않는 내용...
</body>
{% endblock %}

 

  • {% extends 'base.html' %} : base.html을 기본으로 가져온다는 의미입니다.
  • {% block content %} 와 {% endblock %} : 이 사이에 있는 내용을 content라고 하고 이 부분이 base.html에 있는 {% block content %} 와 {% endblock %} 사이에 들어간다고 생각하면 됩니다.

 

 

 


 

 

그동안 url은 프로젝트 폴더안에서 urls.py에서 모든 앱의 url을 담았었다. 

이는 보기가 힘들어질 수 있다.

 

 

 

 각 앱안에 urls.py를 만들어 따로 관리 시켜 보자. 

 

 

 

불편함의 해결2: url 정리

 

 

 

1. 관리할 앱 폴더 내부에 urls.py생성

 

 

urls.py에 path 작성

 

 

 

 

 

이런 식으로..

 

 

3.  기존의 urls.py와 앱의 urls.py 연결

 

 

 

 

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'),
]

+ Recent posts