ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6. Django: Templates
    Python/초간단 장고 Django 2019. 7. 8. 20:15
    반응형

    알 필요는 없지만 장고의 템플릿 엔진을  DTL(Django Template Language)이라고 합니다. 

     

    다른 템플릿 엔진도 사용이 가능하며, 템플릿 엔진에 관한 설정은 config/settings.py 에서 찾아볼 수 있습니다. 

    다른 템플릿 엔진을 사용하는 것을 추천하진 않더군요. 

     

    장고에서 클래스 뷰의 템플릿 폴더는 기본적으로 'app/templates/app'를 이용합니다. 
    'app/templates' 까지는 이해가 가는데 뒤에 'app'이 한번 더 나오는 이유가 궁금하실 겁니다. 

     

    다른 앱에 동일한 이름의 템플릿이 있는 경우 Django는 이들을 구분할 수 없습니다.
    그래서 app이름으로 네임 스페이스를 만들어 둡니다.

    하지만 앱이 하나 뿐이라면..

     

    작성한 템플릿이 자동 인식이 되지 않을 때(폴더를 만든 경우?)가 있습니다.
    장고를 재시작하면 됩니다. 

     

    클래스 뷰를 설명할 때 테이블이 object_list 변수에 담겨서 템플릿에 넘어온다고 설명을 드렸습니다.

    {{object_list}}로 직접 확인해봅니다. 

    <!-- bookmarks/templates/bookmarks/bookmark_list.html -->
    {{object_list}}
    <QuerySet [<Bookmark: 야후>]>

    오~! 잘 넘어왔네요.

     

    장고 템플릿 언어에서는 HTML과 템플릿 언어를 분리하기 위해 {}를 사용합니다. 

    {{}}는 변수, {%%}는 코드, {##}는 주석입니다. 

     

    {{object_list}}를 그대로 쓸 수는 없으니까 언패킹 합니다. 

    파이참에서 HTML을 생성(alt + insert)하면 기본 폼이 나와주니 작업하기 편합니다. 

    <!-- bookmarks/templates/bookmarks/bookmark_list.html -->
    
    <!DOCTYPE html>
    <html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>Bookmarks</title>
    </head>
    <body>
        <h1>북마크</h1>
        <div id="bookmark_list">
            <ul>
            {% for bookmark in object_list %}
                <li>{{bookmark.title}} <a href="{{bookmark.url}}" target="_blank">{{bookmark.url}}</a></li>
            {% endfor %}
            </ul>
        </div>
    </body>
    </html>

     

    잘 작동됩니다. 

     

    장고의 MTV 구조에 맞춰, 

    뼈대만을 추려, 

    최대한 간단히 쓰면서도 

    꼭 필요한 설명은 빠트리지 않으려고 노력했습니다. 

     

    도움되셨기를 바라며.. 

     

    이제 장고 공식 홈페이지의 튜토리얼을 보시거나,

    장고 걸스의 튜토리얼을 보러 갑시다. 

    https://docs.djangoproject.com/ko/3.0/intro/tutorial01/

    https://tutorial.djangogirls.org/ko/django_start_project/

     

    가기 전에 도움 되셨다면 광고도 한번씩 봐주시면 감사하겠습니다. ㅎㅎ

    반응형
Designed by Tistory.