[Django파이썬웹프로그래밍] 05 실습 예제 확장하기 - 5.2~5.3

[Django파이썬웹프로그래밍] 05 실습 예제 확장하기 - 5.2~5.3

반응형

다움은 루트 페이지를 추가하는 것부터 시작!!

5.2 프로젝트 첫 페이지 만들기

( / ) 루트 페이지를 만들어보자

5.2.1 프로젝트 첫 페이지 설계

[그림05_06] 프로젝트 첫 페이지 - UI 설계

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 %} KEJ Django Applications {% for appname in app_list %} {% with appname|add:":"|add:"index" as urlvar %} {{ appname }} {% endwith %} {% endfor %} {% endblock content %}

5.2.5 지금까지 작업 확인하기

(/) 루트 접속해보기

[그림05_07] 루트(/) 접속 화면

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 %} DUNN Django Applications {% for key, value in verbose_dict.items %} {{ value }} {% endfor %} {% endblock content %}

위에 3곳을 수정하면, apps.py를 활용하기 위한 기본 세팅은 끝났고,

그대로 실행하면 애플리케이션 모듈을 참고하여

apps 네임을 하드코딩하지 않고, View와 Template에 반영할 수 있다!

# cd 프로젝트폴더/settings.py ... INSTALLED_APPS = [ ... 'books.apps.BooksConfig', # 해당 줄 주석 풀고, 아랫줄 주석 처리 후 하면 /books/apps.py에 설정한 verbose_name 명칭을 가져다 씀. #'books', # 해당 줄 주석 풀고, 윗줄 주석 처리 후 하면 여기에 설정한 'books' 모듈 명칭을 그대로 가져다 씀. ] ...

[그림05_08] 설정한 verbose_name 을 쓰도록 설정한 경우

그러면 이번엔 INSTALLED_APPS의 설정한 apps 네임에 따라서도

apps 네임을 하드코딩하지 않고, View와 Template에 반영할 수 있다!

# cd 프로젝트폴더/settings.py ... INSTALLED_APPS = [ ... #'books.apps.BooksConfig', # 해당 줄 주석 풀고, 아랫줄 주석 처리 후 하면 /books/apps.py에 설정한 verbose_name 명칭을 가져다 씀. 'books', # 해당 줄 주석 풀고, 윗줄 주석 처리 후 하면 여기에 설정한 'books' 모듈 명칭을 그대로 가져다 씀. ] ...

[그림05_09] Books 모듈 애플리케이션 네임을 그대로 쓰도록 설정한 경우

5.3 polls 애플리케이션 - 클래스형 뷰로 변경하기

요건 한번 5.1~5.2를 참고하여 실습해보자!

그럼 끗~(찡끗)

반응형

from http://eundunn.tistory.com/42 by ccl(A) rewrite - 2021-11-27 07:01:35