django入门笔记4- template
2013-05-01 09:14
423 查看
模版的配置
1.在settings中
TEMPLATE_DIRS= (
'/home/django/mysite/templates',
)
或者
TEMPLATE_DIRS= (
os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'),
)
2.渲染模版的快捷方式
return render_to_response('current_datetime.html', {'current_date': now})
或者(locals包含了所有当前的变量,包括request,内容相当庞大,但是很省事,有利有弊)
return render_to_response('current_datetime.html', locals())
模版的互相引用,当一个部分有重合的时候,可以使用这种方法
{%include "nav.html" %}
模版的继承
1.定义
<!DOCTYPEHTML PUBLIC "-//W3C//DTDHTML 4.01//EN">
<htmllang="en">
<head>
<title>{%block title %}{% endblock %}</title>
</head>
<body>
<h1>Myhelpful timestamp site</h1>
{%block content %}{% endblock %}
{%block footer %}
<hr>
<p>Thanksfor visiting my site.</p>
{%endblock %}
</body>
</html>
2.使用
{%extends "base.html" %}
{%block title %}The current time{% endblock %}
{%block content %}
{{ block.super }}
<p>Itis now {{ current_date }}.</p>
{%endblock %}
模版中的变量,当使用{{ foo.bar }}的时候,查询顺序是:
字典类型查找 (比如 foo["bar"] )
属性查找 (比如 foo.bar )
方法调用 (比如 foo.bar() )
列表类型索引查找 (比如 foo[bar] )
模版标签
{%if %} 和 {% endif %}
1.如果有多个判定逻辑使用多层嵌套的方式解决,不要多个and连用
{%if athlete_list %}
{%if coach_list or cheerleader_list %}
2.并没有 {% elif %} 标签, 请使用嵌套的`` {% if %}`` 标签来达成同样的效果
{%for athlete in athlete_list %}
<p>{{athlete.name }}</p>
{%empty %}
<p>Thereare no athletes. Only computer programmers.</p>
{%endfor %}
1.{%empty%}标签是for特有的当元素列表为空的判断
2.for没有退出循环和continue标签,只能通过内部的标志位来跳过语句的执行
3.for提供的便捷计数器
forloop.counter
forloop.counter0
forloop.revcounter0#还剩下多少个
forloop.first#是否是第一个,布尔值
forloop.last#是否是最后一个
{{forloop.parentloop.counter }} 加上一个parentloop可以得到上个循环的内容,
{%ifequal user currentuser %}
<h1>Welcome!</h1>
{%endifequal %}
1.判断两个变量是否相等
{#This is a comment #}
单行注释
{%comment %}
Thisis a
multi-linecomment.
{%endcomment %}
多行注释
{%autoescape off %}
Hello{{ name }}
{%endautoescape %}
一段文字不转意输出
常用过滤器
{{name|lower }} 小写
{{my_list|first|upper }} 把第一个字母转换为大写
{{bio|truncatewords:"30" }}只显示30个单词
{{pub_date|date:"F j, Y" }} 格式化时间
{{var | length }} 字符串的长度
{{var | safe }} 直接输出不转意
在逻辑判定中表示false
列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False(很明显)
通用上下文的配置
1.settings里面配置
TEMPLATE_CONTEXT_PROCESSORS= (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
)
2.定义相应的上下文生成函数
defcustom_proc(request):
"Acontext processor that provides 'app', 'user' and 'ip_address'."
return{
'app':'My app',
'user':request.user,
'ip_address':request.META['REMOTE_ADDR']
}
3.直接在模版中使用即可
自定义标签过滤器
1.在app目录下(和views平行)创建一个django的包:templatetags
2.一个简单的过滤器内容如下,在目录下创建一个py文件custom_filter.py
from django import template
import settings
register = template.Library()
@register.filter(name="formate_status")
def formate_status(value):
return settings.STATUS_LIST[value]
3.在模版页面中
{%load custom_filter %}
{{ t.status|formate_status }}
1.在settings中
TEMPLATE_DIRS= (
'/home/django/mysite/templates',
)
或者
TEMPLATE_DIRS= (
os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'),
)
2.渲染模版的快捷方式
return render_to_response('current_datetime.html', {'current_date': now})
或者(locals包含了所有当前的变量,包括request,内容相当庞大,但是很省事,有利有弊)
return render_to_response('current_datetime.html', locals())
模版的互相引用,当一个部分有重合的时候,可以使用这种方法
{%include "nav.html" %}
模版的继承
1.定义
<!DOCTYPEHTML PUBLIC "-//W3C//DTDHTML 4.01//EN">
<htmllang="en">
<head>
<title>{%block title %}{% endblock %}</title>
</head>
<body>
<h1>Myhelpful timestamp site</h1>
{%block content %}{% endblock %}
{%block footer %}
<hr>
<p>Thanksfor visiting my site.</p>
{%endblock %}
</body>
</html>
2.使用
{%extends "base.html" %}
{%block title %}The current time{% endblock %}
{%block content %}
{{ block.super }}
<p>Itis now {{ current_date }}.</p>
{%endblock %}
模版中的变量,当使用{{ foo.bar }}的时候,查询顺序是:
字典类型查找 (比如 foo["bar"] )
属性查找 (比如 foo.bar )
方法调用 (比如 foo.bar() )
列表类型索引查找 (比如 foo[bar] )
模版标签
{%if %} 和 {% endif %}
1.如果有多个判定逻辑使用多层嵌套的方式解决,不要多个and连用
{%if athlete_list %}
{%if coach_list or cheerleader_list %}
2.并没有 {% elif %} 标签, 请使用嵌套的`` {% if %}`` 标签来达成同样的效果
{%for athlete in athlete_list %}
<p>{{athlete.name }}</p>
{%empty %}
<p>Thereare no athletes. Only computer programmers.</p>
{%endfor %}
1.{%empty%}标签是for特有的当元素列表为空的判断
2.for没有退出循环和continue标签,只能通过内部的标志位来跳过语句的执行
3.for提供的便捷计数器
forloop.counter
forloop.counter0
forloop.revcounter0#还剩下多少个
forloop.first#是否是第一个,布尔值
forloop.last#是否是最后一个
{{forloop.parentloop.counter }} 加上一个parentloop可以得到上个循环的内容,
{%ifequal user currentuser %}
<h1>Welcome!</h1>
{%endifequal %}
1.判断两个变量是否相等
{#This is a comment #}
单行注释
{%comment %}
Thisis a
multi-linecomment.
{%endcomment %}
多行注释
{%autoescape off %}
Hello{{ name }}
{%endautoescape %}
一段文字不转意输出
常用过滤器
{{name|lower }} 小写
{{my_list|first|upper }} 把第一个字母转换为大写
{{bio|truncatewords:"30" }}只显示30个单词
{{pub_date|date:"F j, Y" }} 格式化时间
{{var | length }} 字符串的长度
{{var | safe }} 直接输出不转意
在逻辑判定中表示false
列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False(很明显)
通用上下文的配置
1.settings里面配置
TEMPLATE_CONTEXT_PROCESSORS= (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
)
2.定义相应的上下文生成函数
defcustom_proc(request):
"Acontext processor that provides 'app', 'user' and 'ip_address'."
return{
'app':'My app',
'user':request.user,
'ip_address':request.META['REMOTE_ADDR']
}
3.直接在模版中使用即可
自定义标签过滤器
1.在app目录下(和views平行)创建一个django的包:templatetags
2.一个简单的过滤器内容如下,在目录下创建一个py文件custom_filter.py
from django import template
import settings
register = template.Library()
@register.filter(name="formate_status")
def formate_status(value):
return settings.STATUS_LIST[value]
3.在模版页面中
{%load custom_filter %}
{{ t.status|formate_status }}
相关文章推荐
- Django学习笔记(一)-入门
- Python Web开发 之Django框架入门学习笔记(一)——安装和初步使用
- django入门笔记5- model
- [Django]入门笔记 --怎样简单启用后台管理
- python学习笔记--Django入门二 Django 的模板系统
- Django2.0 学习笔记(一)-->新手入门
- Django Crusher 入门笔记(1)
- Python Web开发:Django入门学习笔记(2)
- Django入门笔记【六】
- 【day 17】python编程:从入门到实践学习笔记-基于Django框架的Web开发-设计样式和部署(一)
- 物联网笔记-----------Django之template分页的实现
- Django Crusher 入门笔记(2)
- Crushe Django 入门笔记4 使用模型
- Django学习笔记1-入门
- Django学习笔记3:Model,Template,View 基本概念
- Django Crusher 入门笔记(3)
- Django的学习笔记(一)(Django Web入门)
- Django学习笔记3:Model,Template,View 基本概念
- django template笔记