1.기본 설정(view와 url 설정)
views.py를 통해 만들어진 template을 연결하기 위해서는 다음과 같이 프로젝트와 앱을 만들어놔야한다.
1)django-admin startproejct my_site
해당 명령어를 이용해서 my_site라는 프로젝트를 만든다.
2)python manage.py startapp my_app
해당 명령어를 이용해서 my_app이라는 애플리캐이션을 만든다.
3)my_app에는 urls.py가 없기 때문에 urls.py파일을 만들고 urlpatterns를 통해 view와 연결하고 views.py에는 example_view함수
를 만들어 example.html 파일을 연결시킨다.
마지막으로 프로젝트 레벨의 my_site의 urls.py에 my_app의 url을 연결하여 기본 설정을 마무리한다.
2. 앱 디렉토리 설치 및 연결하기
1)python manage.py migrate
해당 명령어를 통해 settings.py 내부에 설치된 앱을 살펴보고, 필요한 데이터 베이스 테이블을 생성한다.
2)app을 설치하고 연결하기
my_app 애플리케이션 내에는 apps.py라는 파일이 있는데 해당 파일을 확인하면 다음과 같다.
여기서 MyAppConfig를 settigns.py의 INSTALLED_APPS에 등록해줘야한다.
3)python manage.py makemigrations my_app
이렇게 등록한 앱을 Django의 앱과 데이터베이스의 변경사항에 저장하기 위해서 python manage.py makemigrations my_app을 이용해서 저장한다.
4)templates/my_app/example.html
마지막으로 이렇게 연결된 앱을 view에서 사용한 my_app/example.html에 연결하기 위해서 my_app 내부에 templates라는 폴더를 만들고 해당 폴더 내부에 my_app이라는 폴더를 하나 더 만들어 내부에 example.html을 생성해 놓는다. 이렇게 하는 이유는 django의 경우 같은 이름의 파일을 찾아서 가져오는데, templates 내부에 my_app이라는 폴더를 만들어 찾을때 혼동을 피하기 위함이다.
3.템플릿 변수
1)variable.html
기존에 사용하던 example.html과 더불어 variable.html을 생성하고 urls.py에 views.py를 통해 연결한다.
2)my_var 템플릿 변수
views.py를 이용해 variable.html을 연결할때는 다음과 같은 variable_view함수를 이용한다.
여기서 중요한 것은 my_var이라는 템플릿 변수를 사용한 것이다. my_var과 같이 딕셔너리를 이용해서 변수를 선언하고, render에 context로 넘겨주면 variable.html에서 해당 딕셔너리에 들어있는 값을 사용할 수 있다.
다음과 같이 html파일 내에서 중괄후 두번을 이용해서 키 값을 대입해준다면 변수의 값을 사용할 수 있게 된다.
해당 url을 통해 사이트로 접속한다면 다음과 같이 변수를 이용해서 문장을 출력하는 것을 확인할 수 있다.
즉 원하는 변수를 이용해서 html에 직접적으로 나타낼 수 있는 것이다.
4. Filter
필터란 python 스크립트가 아닌 템플릿 측의 변수에 변경사항을 빠르게 저장하도록 해주는 django 템플릿의 수정자이다.
다음과 같이 기존에 가져오던 변수에 | 문자를 입력하고 upper(대문자로 바꾸기), capfist(첫문자만 대문자로)와 같은 필터를 사용한다면 즉각적으로 원하는 변수를 사용자의 입맛에 맞게 변경할 수 있다는 장점이 있다.
5. Tag
태그란 HTML 템플릿 안에서 특별한 기능을 수행하는 장고 문법이다.
{% %} 문법으로 감싸서 사용하고, 변수 출력은 {{ }}를 사용한다.
1)for 루프
다음과 같이 variable_view에서 다음과 같은 my_var라는 변수를 가지고 있다고 가정했을때, for 문을 이용해서 간단하게 리스트에서 변수를 출력할 수 있다.
for루프의 경우 {% for in %}{% endfor %}라는 문법 형태를 가진다. 위의 예시의 경우 some_list에서 변수를 하나씩 가져와서 출력하는 것으로 보면 된다. 주의할 점은 {% endfor %}을 통해서 for문이 언제 끝나는지 알려줘야 한다는 것이다.
2)if,Elif,Else문
[if문]
if문의 경우 {% if %}{% endif %} 라는 기본 형태의 문법을 사용하고 if 다음에 들어오는 변수의 값이 True인 경우에만 {% if %}와 {% endif %} 안에 있는 구문이 실행되게 된다. 다음과 같은 예시를 통해 확인해보자.
먼저 다음과 같이 variable_view함수 내에 user_logged_in이라는 로그인 상태가 True인 새로운 딕셔너리를 만든다.
이제 {% if %}{% endif %}형태의 문법을 사용해서 user_logged_in이 True인 경우에 Welcome back you are logged in 이라는 문구가 출렬 되도록 작성한다.
[Elif, Else문]
다음과 같이 for문 및 조건문을 이용해서 중첩해서 사용한다면 원하는 로직을 구현할 수 있다. 위의 예시의 경우 num이 2인 경우에는 TWO라는 문자를 순서 없는 리스트로 보내고, 아닌 경우에는 그대로 숫자를 보내는 로직을 구현한 것이다.
6.URL 이름
이제 특정 페이지에 원하는 페이지로 이동하는 URL에 관한 링크를 만들고 싶다면 URL이름을 사용해서 연결하면 쉽게 구현할 수 있다.
1)app 네임스페이스 등록
my_app 내부에 있는 urls.py에 app_name='my_app'을 통해 app 네임스페이스를 등록한다.
2)URL 이름 설정
path를 통해 view를 연결한 후에 name='example'과 같이 URL이름을 설정해준다.
3){% url %}
이제 원하는 url연결을 위해 {%url%}을 이용해서 안에 'app 네임스페이스:URL이름'형식으로 작성해서 원하는 URL을 연결한다.
이런 방법을 사용하게 되면 복잡한 경로를 직접 입력할 필요 없어 더욱더 직관적이고 간단하게 원하는 URL을 연결할 수 있다.
7. 템플릿 상속
먼저 얼마나 많은 앱을 가지고 있는지 상관없이 일정한 사이트를 보여주고 싶다면 전체 프로젝트 레벨의 templates 폴더를 만들어줘야한다. 위의 사진과 같이 my_app과 my_site와 같은 선상에 폴더를 만들어줘야한다.
1) settings.py
templates폴더를 만들었다면 이 폴더를 장고가 인식할 수 있도록 settings.py에 등록해줘야한다. 먼저 import os를 통해 관련 라이브러리를 가져오고, TEMPLATES의 DIRS에 os.path.join(BASE_DIR, 'templates')를 입력하여 연결해준다.
2)base.html
일정한 사이트를 유지하는 화면인 base.html을 프로젝트 레벨의 templates에 만들어주고
다음과 같이 block문법을 사용해서 확장 및 상속할때 들어가는 부분을 설정해준다.
간단하게 설명하자면 content라는 이름의 블록위와 endblock아래 있는 부분은 확장 및 상속시에는 일정하게 유지할 수 있고, block 및 endblock 내부에만 확장된 html의 내용이 들어가게 된다.
3){% extends %}
해당 예시는 example.html의 예시이다. {% extends 'base.html' %}을 통해서 base.html을 확장해서 사용한다는 표시를 하고 block내부에 원하는 내용을 입력하게 되면, 기본 틀은 base.html을 사용하고 block내부에 있는 내용만 사용할 수 있어 더 simple하게 html을 관리할 수 있게 된다.
'Django Class Review' 카테고리의 다른 글
Django Class Review3(Database & Query) (0) | 2025.08.20 |
---|---|
Django Class Review3(Model) (0) | 2025.08.20 |
Django Class Review2(static file) (0) | 2025.08.19 |
Django Class Review2(custom 404 page) (0) | 2025.08.19 |
Django Class Review1(view, URL) (1) | 2025.08.12 |