본문 바로가기
Python/Django Ⅲ

(Review) Django 템플릿 언어

by Mr.DonyStark 2024. 5. 24.

□ Django는 HTML/CSS 로 구성된 Templates 부분에 파이썬 언어를 바탕으로 코드를 짤수 있는 템플릿 언어가 있음. 자세한 내용은 아래 링크 참고.

https://docs.djangoproject.com/en/5.0/ref/templates/language/

 

The Django template language | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com

□ my_app 이라는 하위 앱을 생성 후 views, urls, template 파일을 생성함

 ● my_app > views.py

   ○ my_var라는 딕셔너리 생성

   ○ render 함수 : render 함수는 HTTP 요청에 대한 응답으로 HTML 페이지를 반환하는 데 사용. 주로 템플릿을 렌더링하고, 이를 HTTP 응답 객체로 감싸서 클라이언트에게 전송하는 역할 함. render 함수는 Django의 뷰 함수 내에서 주로 사용되며, 간편하게 템플릿 렌더링을 처리할 수 있게 해줌.

from django.shortcuts import render

# Create your views here.
def exmaple_view(request):
    return render(request, "my_app/example.html") #myapp>templates>myapp>exmaple.html


def variable_view(request):

    my_var = {"first_name":"dongwhee",
              "last_name":"KIM",
              "age":"30",
              "some_list":[1,2,3,4,5],
              "some_dict":{"inside_key":"inside_value", "outside_key":"outside_value"},
              "user_logged" : True
              }
    return render(request, "my_app/variable.html")

 

 ● my_app > urls.py

   ○ " " : https://***.**.**.*/my_app 요청시 example_view에서 render함수로 지정한 example.html 반환

   ○ "variable/" : https://***.**.**.*/my_app/variable 요청시 variable_view에서 render 함수로 지정한 variable.html 반환

from django.urls import path
from . import views

#reguster the appnamespace
# URL names
app_name = "my_app"

urlpatterns = [
    #domain/my_app/
    path("", views.exmaple_view, name="example"),
    path("variable/", views.variable_view, name="variable")
]

 

 ● project > urls.py

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    #app
    path("my_app/", include("my_app.urls"))
    ]

 

 ● Template

   ○ 필터

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {% comment %} {% comment %} <h1>variable.HTML</h1> {% endcomment %}
    <!--장고 필터 사용-->
    <h2>{{first_name | upper}}</h2>
    <h2>{{last_name | lower | capfirst}}</h2>
    <h2>{{some_list}}</h2>
    {% comment %} <!--장고 필터 사용-->    
    <h2>{{some_list | length}}</h2>
</body>
</html>

 

   ○ 반복문

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p><h1>반복문1</h1></p>
    <ul>
    {%for a in some_list %}
        <li>{{a}}</li>
    {% endfor %}
    </ul>
    
    <p><h1>반복문2</h1></p>
    {% for k,v in some_dict.items %}
    <h5>키 : {{k}}</h5>
    <h5>벨류 : {{v}}</h5>
    {% endfor %}
</body>
</html>

 

   ○ 조건문

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>조건문1 IF</p>
    {% if user_logged %}
    출력
    {% endif %}

    <p>조건문2 IF</p>
    {% if user_logged %}
    <h1> welcome {{first_name}} </h1>
    {% endif %}
</body>
</html>