본문 바로가기

Python/Django

(40)
[Django] Django - 상속(block) 이번에는 상속(block)에 대해서 알아보겠습니다. 반복되는 html 코드를 block 으로 처리하여 반복적으로 사용가능하게 코딩할 수 있다. 일반적인 구조는 프로젝트 레벨에서 base.html 파일을 갖고, 애플리케이션 레벨의 base.html파일에서 프로젝트 레벨의 base.html을 확장하거나, 상속하는 구조로 구성한다. 템플릿과 프로젝트 디렉토리를 등록하기 위해 settings를 편집하고, 그 다음엔 템플릿 상속에 대해 알아보겠습니다. 1. 프로젝트 레벨에서 templates 폴더를 생성하고 여기에 프로젝트 레벨의 base.html 파일을 만든다. ./my_site/templates/base.html {% comment %} ./my_site/templates/base.html {% endcomm..
[Django] Django - Tags(url) 이번에는 url 태그에 대해서 알아보겠습니다. 1단계, my_app의 urls.py 파일에 app 네임스페이스를 등록 # register the app namespace # RUL NAMES app_name = 'my_app' 2단계, urls.py 파일의 urlpatterns 경로에 뷰에 연결할 URL name 설정 urlpatterns = [ path('', views.example_view, name= 'example'), # domain.com/my_app/ path('variable/', views.variable_view, name='variable'), # domain.com/my_app/variable/ ] 3단계, 원하는 html 템플릿 파일에서 url 태그와 my_app:variable..
[Django] Django - Tags(for, if) 이번에는 태그에 대해서 알아보겠습니다. 태그에는 기본적으로 for 루프, CSRF 토큰, if else, URL 연결등 만흔 기능이 있습니다. ./my_site/my_app/views.py def variable_view(request): my_var = {'first_name':'Rosaland', 'last_name':'Franklin', 'some_list':[1,2,3], 'some_dict':{'inside_key':'inside_value'}, 'user_logged_in':True, 'user_logged_out':False, } return render(request, 'my_app/variable.html', context=my_var) for 문 예제 - ./my_site/my_app/..
[Django] Django - filter 이번에는 filter 에 대해서 알아보겠습니다. 이전화면에서 몇가지 필터를 추가해보겠습니다. 대소문자 변경에 대한 필터 입니다. 필터는 너무 많은 명령어가 있어서 필요한 것은 아래 사이트를 참고하세요. "https://docs.djangoproject.com/en/4.1/ref/templates/builtins/#filter" VARIABLE.HTML {{first_name}} {{last_name}} {{first_name | upper}} {{last_name | lower}} {{some_list}} {{some_list.0}} {{some_list.1}} {{some_list.2}} {{some_dict}} {{some_dict.inside_key | upper}}
[Django] Django - variable 전달 이번에는 뷰에서 html 로 값을 전달하는 방법에 대해서 알아보겠습니다. ./my_site/my_app/views.py 생성 from django.shortcuts import render # Create your views here. def example_view(request): # my_app/templates/my_app/example.html # render 내부의 폴더는 상기 주석의 후반부 의미함. 전반부는 프로젝트의 settings.py 에서 설정함 return render(request, 'my_app/example.html') def variable_view(request): my_var = {'first_name':'Rosaland', 'last_name':'Franklin', 'som..
[Django] Django - (맛보기 migrate)App별 template 디렉토리 이번에는 앱별로 템플릿 디렉토리를 만들어서 관리하는 방법에 대해서 알아보겠습니다. settings.py 파일의 INSTALLED_APPS 변수에 그 커스텀 Django 앱을 등록해야 합니다. 1단계 새로운 Django 앱 생성 - manage.py startapp "앱이름" 앱 내에서 urls.py을 열고, views.py를 생성합니다. 뷰를 특정 URL에 연결하고, 실제 앱 URL을 프로젝트 URL에 매핑 2단계 - 데이터베이 테이블과 모델에 대한 작업 migrate 명령인 'python manage.py migrate'를 실행 - settings.py 내부의 설치된 앱(INSTALLED_APPS)을 살펴보고, 필요한 데이터베이스 테이블을 생성합니다. 3단계 - 프로젝트가 앱폴더를 인식하게 연결(앱 내..
[Django] Django - (맛보기)Template 이번에는 Template에 대해서 알아보겠습니다. Template을 사용하기 위해서는 render 함수를 사용해야 한다. 아래의 절차대로 진행하면 template을 이용하여 view 를 구현할 수 있다. 프로젝트의 settings.py 설정파일 수정 - 프로젝트 폴더 하위에 templates 폴더 생성(/my_site/templates/) # 패키지 추가 import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplat..
[Django] Django - (맛보기)reverse 이번에는 reverse에 대해서 알아보겠습니다. reverse란, path 의 옵션중에 name 을 이용해서 url 을 역으로 찾는 기능입니다. 다르게 표현하면 view 이름을 이용해서(name = view 이름) url을 찾는것입니다. 표현이 좀 어설프지만 코드를 보면 명확해 집니다. /first_app/urls.py - from django.urls import path from . import views urlpatterns = [ path('', views.num_page_view), path('/', views.news_view, name='topic-page'), path('/', views.add_view), ] /first_app/views.py - num_page_view 추가 from ..