본 포스트는 AskDjango의 장고 기본편 을 보고 정리한 내용입니다.

Django의 철학

  • 다른 프레임워크의 MVC와 유사한 MTV 사용
  • Fat Model: 비즈니스 로직을 최대한 model에서 구현하자
  • Stupid Template: 비즈니스 로직을 최대한 지양하자
  • Thin View: 해당 요청을 처리할때 필요한 인자처리 및 model인스턴스 획득 등 정도의 기능만 하도록 지향

Template Engines 몇가지

  • Django Template Engine: Django 기본 지원 템플릿 엔진
  • Jinja2: 써드파티 엔진이었으나 최근에 최소한의 지원이 내장됨
    • Django Template Engine과 문법이 유사
    • Django-jinja 추천
  • Mako, Hamlpy

Django Tmeplate 문법

  • {% %} 사용

      
    {% extends "test.html" %}	<!-- Django Template Tage // 필요한 인자 -->
    	{% for u in users %}
    		...
    	{% endfor %}			<!-- 일부 문법의 경우 구문의 끝 표기 해주어야 함-->
      
    
  • 파이썬 로직 사용 불가 템플릿 렌더링 전에 필요한 값을 인자로 전달받음( View -> Template )

  • 인자를 넘길때는 ()과 쉼표,를 사용하지 않을뿐 파이썬의 안자 넘기는 형식과 유사하다(positional argument, keyword arguments)

변수 사용


{{ val_name }}			<!-- 변수 이름으로 사용 -->
{{ dic.key }}			<!-- = dic['key'}-->
{{ object.attr }}
{{ object.function}}	<!-- 인자없는 함수 사용 가능(callable) -->
{{ list.0 }}			<!-- list의 index로 사용 가능 = list(0)-->

Django Template Tag

  • Dajgno Template용 Tag

  • {% %} 하나만 쓰기도 하고 {% for i in range(10) %}{% endif %}처럼 2개 이상으로 쓰이기도 한다

  • 내장 Tag가 존재하며 별로 커스텀 Tag 추가 가능

  • comment tage및 # 을 이용해 주석 처리 가능

      
    {# 주석1 #}
    {% comment "주석에 대한 설명(달지 않아도 됨)" %}
    	주석2
    	주석3
    	주석4
    {% endcomment %}
      
    
    • Server단의 주석임 Client단에서의 javascript의 주석/**/이나 html 주석<!-- -->과 다름