Django中template使用
4120 ワード
1.template
template HTML,
1. template
django template ,
, :DJANGO_SETTINGS_MODULE,
settings.py , ,
template,
django-admin.py startproject mysite
mysite, python manage.py shell
, DJANGO_SETTINGS_MODULE
, python,
2. template
from django.template import Context, Template
t = Template('My name is {{ name }}')
c = Context({'name':'zhang'})
t.render(c)
:Template() template ,
template ,Context() ,
template render()
:t.render() unicode
:
# Bad
for name in ('John', 'Julie', 'Pat'):
t = Template('Hello, {{ name }}')
print t.render(Context({'name': name}))
# Good
t = Template('Hello, {{ name }}')
for name in ('John', 'Julie', 'Pat'):
print t.render(Context({'name': name}))
3.Context
>>> 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)
u'Sally is 43 years old.'
template, "."
,
, , ,
,
:string isdigit(),upper()
>>> from django.template import Template, Context
>>> t = Template('{{ var }} -- {{ var.upper }} -- {{ var.isdigit }}')
>>> t.render(Context({'var': 'hello'}))
u'hello -- HELLO -- False'
>>> t.render(Context({'var': '123'}))
u'123 -- 123 -- True'
:
template , :
1. eg: foo['bar']
2. eg: foo.bar
3. eg: foo.bar()
4.list eg: foo[0]
:
1. ,
silent_variable_failure true,
,template , :
>>> t = Template("My name is {{ person.first_name }}.")
>>> class PersonClass3:
... def first_name(self):
... raise AssertionError, "foo"
>>> p = PersonClass3()
>>> t.render(Context({"person": p}))
Traceback (most recent call last):
...
AssertionError: foo
>>> class SilentAssertionError(AssertionError):
... silent_variable_failure = True
>>> class PersonClass4:
... def first_name(self):
... raise SilentAssertionError
>>> p = PersonClass4()
>>> t.render(Context({"person": p}))
u'My name is .'
4.Context
Context , context ,
from django.template import Context, Template
c = Context({'foo':'bar})
c['foo'] -> 'bar'
del c['foo'] -> foo
c['foo'] ->
c['hello'] = 'hello world' ->
5.Template Tag
1. : {% if %} {% else %} {% elseif %} {% endif %}
:
python False
1. list []
2. tuple ()
3. {}
4. ''
5. 0
6. None
7. False
8. , Boolean , Python
9. True
2.for
{% for item in todo_list %}
{{ forloop.counter }}: {{ item }}
{% endfor %}
:for ,
forloop.counter 1 list
forloop.counter0 0 0 list
forloop.revcounter list 1
forloop.revcounter 0 , 0
forloop.first , True,
forloop.last , True
forloop.parentloop.counter
3.ifequal/ifnotequal
{% ifequal user currentuser %}
Welcome!
{% endifequal %}
4.
{# This is a comment #}
5. filter
{{ name|lower }}
pipe, , name
{{ my_list|first|upper }}
my_list
{{ pub_date|date:"F j, Y" }}
put_date date,date