반응형
다움은 루트 페이지를 추가하는 것부터 시작!!
5.2 프로젝트 첫 페이지 만들기
( / ) 루트 페이지를 만들어보자
5.2.1 프로젝트 첫 페이지 설계

5.2.2 URLconf 코딩하기
urls.py 에 추가하기 하기
( 클래스 뷰 참고! )
# cd 프로젝트폴더/urls.py
from django.contrib import admin
from django.urls import path, include
from kej_test import views # 추가
#from django.urls import path
#from polls import views
urlpatterns = [
...
path('', views.HomeView.as_view(), name='home'), # 추가
...
]
5.2.3 View 코딩하기
views.py 에 클래스뷰 추가하자
# cd 프로젝트폴더/views.py
from django.views.generic.base import TemplateView
#--- TemplateView
class HomeView(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['app_list'] = ['polls', 'books']
return context
5.2.4 Template 코딩하기
template 폴더에 home.html 을 추가하자 ( base.html 상속 )
# cd 프로젝트폴더/templates/home.html
{% extends "base.html" %}
{% block content %}
<h2>KEJ Django Applications</h2>
<ul>
{% for appname in app_list %}
{% with appname|add:":"|add:"index" as urlvar %}
<li><a href="{% url urlvar %}">{{ appname }}</a></li>
{% endwith %}
{% endfor %}
</ul>
{% endblock content %}
5.2.5 지금까지 작업 확인하기
(/) 루트 접속해보기

5.2.6 apps.py 활용 맛보기
프로젝트 일반적인 settings.py파일이고,
앱마다 필요한 항목을 설정할 수 있는 곳은 apps.py 파일이다.
# cd 프로젝트폴더/books/apps.py
from django.apps import AppConfig
class BooksConfig(AppConfig):
name = 'books'
verbose_name = 'Book-Author-Publisher App' # 추가
# cd 프로젝트폴더/views.py
from django.views.generic.base import TemplateView
from django.apps import apps # 추가
#--- TemplateView
class HomeView(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
#context['app_list'] = ['polls', 'books']
# 아래 5줄 추가
dictVerbose = {}
for app in apps.get_app_configs():
if 'site-packages' not in app.path:
dictVerbose[app.label] = app.verbose_name
context['verbose_dict'] = dictVerbose
return context
# cd 프로젝트폴더/templates/home.html
{% extends "base.html" %}
{% block content %}
<h2>DUNN Django Applications</h2>
<!-- <ul>
{% for appname in app_list %}
{% with appname|add:":"|add:"index" as urlvar %}
<li><a href="{% url urlvar %}">{{ appname }}</a></li>
{% endwith %}
{% endfor %}
</ul> -->
<ul>
{% for key, value in verbose_dict.items %}
<li><a href="{% url key|add:':index' %}">{{ value }}</a></li>
{% endfor %}
</ul>
{% endblock content %}
위에 3곳을 수정하면, apps.py를 활용하기 위한 기본 세팅은 끝났고,
그대로 실행하면 애플리케이션 모듈을 참고하여
apps 네임을 하드코딩하지 않고, View와 Template에 반영할 수 있다!
# cd 프로젝트폴더/settings.py
...
INSTALLED_APPS = [
...
'books.apps.BooksConfig', # 해당 줄 주석 풀고, 아랫줄 주석 처리 후 하면 /books/apps.py에 설정한 verbose_name 명칭을 가져다 씀.
#'books', # 해당 줄 주석 풀고, 윗줄 주석 처리 후 하면 여기에 설정한 'books' 모듈 명칭을 그대로 가져다 씀.
]
...

그러면 이번엔 INSTALLED_APPS의 설정한 apps 네임에 따라서도
apps 네임을 하드코딩하지 않고, View와 Template에 반영할 수 있다!
# cd 프로젝트폴더/settings.py
...
INSTALLED_APPS = [
...
#'books.apps.BooksConfig', # 해당 줄 주석 풀고, 아랫줄 주석 처리 후 하면 /books/apps.py에 설정한 verbose_name 명칭을 가져다 씀.
'books', # 해당 줄 주석 풀고, 윗줄 주석 처리 후 하면 여기에 설정한 'books' 모듈 명칭을 그대로 가져다 씀.
]
...

5.3 polls 애플리케이션 - 클래스형 뷰로 변경하기
요건 한번 5.1~5.2를 참고하여 실습해보자!
그럼 끗~(찡끗)
반응형
'IT 툴툴' 카테고리의 다른 글
[Django파이썬웹프로그래밍] 07 Cloud 서버에 Django 배포하기 - 7.1~7.7 (0) | 2021.11.27 |
---|---|
[Django파이썬웹프로그래밍] 06 Django의 웹 서버 연동 원리 - 6.1~6.3 (0) | 2021.11.27 |
[Django파이썬웹프로그래밍] 05 실습 예제 확장하기 - 5.1 (0) | 2021.11.27 |
[Django파이썬웹프로그래밍] 04 Django의 핵심 기능 - 4.1~4.3 (0) | 2021.11.22 |
[Django파이썬웹프로그래밍] 03 Django 웹 프레임워크 - 3.6~3.7 (0) | 2021.11.22 |