Django - 템 플 릿 요약
템 플 릿 언어 는 무엇 입 니까?
html+
Template 와 Context
터미널: python manage. py 셸 django 환경 진입
>>> from django.template import Context,Template
>>> t = Template('My name is {
{name}}')
>>> c= Context({'name':'kkk'})
>>> t.render(c)
'My name is kkk'
요컨대 {{변수}} html 에 포 함 된 변 수 는 백 엔 드 에서 직접 가 져 올 수 있 습 니 다.
깊이 변수의 찾기 - > 만능 마침표.
。
# , , :
>>> from django.template import Template, Context
>>> t = Template('Item 2 is {
{ items.2 }}.')
>>> c = Context({'items': ['apples', 'bananas', 'carrots']})
>>> t.render(c)
'Item 2 is carrots.'
# Python 。 , :
>>> from django.template import Template, Context
>>> person = {'name': 'Sally', 'age': '43'}
>>> t = Template('{
{ person.name }} is {
{ person.age }} years old.')
>>> c = Context({'person': person})
>>> t.render(c)
'Sally is 43 years old.'
# , 。 , Python datetime.date
#year 、 month day , :
>>> from django.template import Template, Context
>>> import datetime
>>> d = datetime.date(1993, 5, 2)
>>> d.year
1993
>>> d.month
5
>>> d.day
2
>>> t = Template('The month is {
{ date.month }} and the year is {
{ date.year }}.')
>>> c = Context({'date': d})
>>> t.render(c)
'The month is 5 and the year is 1993.'
# , (dots) ,
# 。
>>> from django.template import Template, Context
>>> class Person(object):
... def __init__(self, first_name, last_name):
... self.first_name, self.last_name = first_name, last_name
>>> t = Template('Hello, {
{ person.first_name }} {
{ person.last_name }}.')
>>> c = Context({'person': Person('John', 'Smith')})
>>> t.render(c)
'Hello, John Smith.'
# 。 , Python upper() isdigit()
# , :
>>> from django.template import Template, Context
>>> t = Template('{
{ var }} -- {
{ var.upper }} -- {
{ var.isdigit }}')
>>> t.render(Context({'var': 'hello'}))
'hello -- HELLO -- False'
>>> t.render(Context({'var': '123'}))
'123 -- 123 -- True'
# * * ;
# 。
if
if true 나 false 의 값 만 판단 할 수 있 고 복잡 한 판단 을 할 수 없습니다.
{% if 1 %}
{% elif False %}
{% endif %}
for
{% for i in obj%}
#
{% endfor %}
li=[1,2,3]
{% for foo in li %}
{
{ forloop.counter }}
{% endfor %}
{% for foo in li %}
{
{ forloop.counter0 }}
{% endfor %}
{% for foo in li %}
{
{ forloop.revcounter }}
{% endfor %}
-----------------------------------------------
1 2 3
0 1 2
3 2 1
filter & simple_tag
필터 필터
str='helloWord'
{
{ str | upper }}
{
{ str | lower }}
{
{ str | first | upper }}
{
{ str | capfirst }}
-----------------------------------------
HELLOWORD
helloword
H
HelloWord
add: 변수 에 해당 하 는 값 을 추가 합 니 다.
addslashes: 변수 에 따옴표 앞 에 사선 을 추가 합 니 다.
이니셜 대문자
cut: 문자열 에서 지정 한 문 자 를 제거 합 니 다.
date: 날짜 문자열 포맷
defoult: 값 이 False 라면 기본 값 으로 바 꿉 니 다. 그렇지 않 으 면 원래 값 으로 바 꿉 니 다.
add=5
{
{obj|add:5}}
value2='hel l o wor ld'
{
{value2|cut:' '}}
value3=datetime.datetime.now()
{
{value3|date:'y-m-d'}}
value=[]
{
{ value|default:' ' }}
-----------------------------------
11
hellowrod
2017-10-18
s1 = "OK"
{% autoescape off %}
{
{ s1 }}
{% endautoescape %}
{
{s1|safe}}
사용자 정의 filter
filter_demo.html
{% load my_tag %}
Title
{% if n1 and n2 %}
{% if n1|add_num:n2 > 100 %}
{
{ n1 }}+{
{ n2 }} = {
{ n1|add_num:n2 }} 100
{% elif n1|add_num:n2 == 100 %}
{
{ n1 }}+{
{ n2 }} = {
{ n1|add_num:n2 }} 100
{% else%}
{
{ n1 }}+{
{ n2 }} = {
{ n1|add_num:n2 }} 100
{% endif %}
{% endif %}
my_tag.py
from django import template
register = template.Library()
@register.filter
def add_num(nub1, nub2):
return int(nub1) + int(nub2)
view
def filter_demo(request):
if request.method == 'POST':
n1 = request.POST.get('n1',None)
n2 = request.POST.get('n2',None)
print(n1,n2)
return render(request, 'filter_demo.html', locals())
elif request.method == 'GET':
return render(request, 'filter_demo.html')
템 플 릿 계승
base.html
Title
{% block content %} What Happtend {% endblock %}
ordered.html
{% extends 'base.html' %}
{% block content %}
{
{ block.super }}
{% endblock %}
shopping_car.html
{% extends 'base.html'%}
{% block content %}
{% endblock %}
칠판 을 두드리다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.