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