앞으로 settings.py 에 다음과 같이 코드를 수정한다.
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
템플릿 필터 : 템플릿에서 데이터를 형식화하고 변환 가능
만약에 블로그 게시물들을 아래와 같이 posts로 템플릿에 보낸다면,
def postlist(request):
posts = Post.objects.all()
return render(request, 'blog/postlist.html', {'posts':posts})
템플릿 필터는 이렇게 쓸 수 있다.
{% for i in posts %}
<p>{{i.id}}</p>
<p>{{i.title}}</p>
<p>대문자 : {{i.content|upper}}</p>
<p>소문자 : {{i.content|lower}}</p>
<p>줄바꿈안함 : {{i.content}}</p>
<p>줄바꿈 : {{i.content|linebreaks}}</p>
<p>말줄임 : {{i.content|truncatewords:3}}</p>
<p>글자줄임 : {{i.content|truncatechars:10}}</p>
<p>슬라이싱 : {{i.content|slice:":10"}}</p>
<p>공백 병합(join) : {{i.content|join:"-"}}</p>
<p>길이 : {{i.content|length}}</p>
<p>태그 없애기 : {{i.content|striptags}}</p>
<p>문자열에 더하기 : {{i.content|add:"!"}}</p>
<p>변수로 추가하기 : {{i.content|add:i.title}}</p>
<p>날짜 형식 바꾸기 : {{i.created_at|date:"y!!m!!d"}}</p>
<p>날짜 형식 바꾸기 : {{i.created_at|date:"Y-M-D"}}</p>
<p>필터 중첩 : {{i.content|upper|linebreaks|truncatewords:10}}</p>
<hr>
{% endfor %}
for문 안에서는 이런 것도 쓸 수 있다.
{% for i in posts %}
<h1>{{ i.title }}</h1>
<p>{{ i.content }}</p>
<p>for문을 몇번째 반복인가 : {{ forloop.counter }}</p>
<p>for문을 0부터 count : {{ forloop.counter0 }}</p>
<p>for문을 101부터 count : {{ forloop.counter|add:100 }}</p>
<p>for문을 거꾸로 count : {{ forloop.revcounter }}</p>
<p>for문의 첫번째인가? : {{ forloop.first }}</p>
<p>for문의 마지막인가? : {{ forloop.last }}</p>
<hr>
{% endfor %}
템플릿에서 변수 할당 (자주 안씀)
{% with value='hello world' %}
<h1>{{value}}</h1>
{% endwith %}
주석
{# 주석내용 #}
{% comment %}
여러줄 주석은 이렇게
{% endcomment %}
path("client/<int:id>/", app_views.client, name="app-views-client") 일때 url
{% url 'app-views-client' client.id %}
Django의 이스케이프 기능 비활성화하는 법 (주의)
(글자 그대로 나오지않고, 태그나 스크립트가 적용됨.)
{% for i in posts %}
<p>{{i.content|safe}}</p>
{% endfor %}
{% for i in posts %}
{% autoescape off %}
<p>{{i.content}}</p>
{% endautoescape %}
{% endfor %}
markdown문법 사용
pip install django-markdown-deux, settings.py에 'markdown_deux' app 등록
{% load markdown_deux_tags %}
{% for i in posts %}
<p>{{ i.content | markdown }}</p>
{% endfor %}
'Django' 카테고리의 다른 글
Django 실습(9) 동영상 CRUD 구현하기 (0) | 2023.10.20 |
---|---|
Django 실습(8) RDB(관계형 데이터베이스) 만들어보기 (2) | 2023.10.17 |
Django CBV - 제네릭 뷰 (Generic View) (1) | 2023.10.16 |
Django 실습(7) 클래스 기반 뷰 (Class-Based Views) 이용하기 (1) | 2023.10.16 |
Django 실습(6) Login 기능 구현하기 (0) | 2023.10.13 |