核心提示:django template 基础(模板对象(Template),上下文对象(Context))1 启动python环境: python manage.py shell从项目目录下,通过 pytho...
       django template 基础(模板对象(Template),上下文对象(Context))
1 启动python环境: python manage.py shell
从项目目录下,通过 python manage.py shell 来启动 :与直接使用python 命令的不同是,会告诉django 的使用的配置文件 settings
2 创建Template,Context对象:
创建对象代码
from django.template import Context, Template
t = Template("select {{id}}, {{name}} from {{table}}")
d ={'name':'name' , 'id':'id' , 'table':'table'}
c = Context(d)
t.render(c)
注意:t.render(c)返回的值是一个Unicode对象,一个模板可以被多个context对象渲染控制
3 Context 上下文
1 if/else选择
from django.template import Context, Template
template = '''
    select t.id,
           t.name,
           {% if count %}
           count(t.age)
           {% else %}
           sum(t.age)
           {% endif %}
      from {{table}}     
    group by t.id,t.name
'''
t2 = Template(template)
print(t2.render(c))
输出结果:
  select t.id,
          t.name,
          sum(t.age)
     from table
   group by t.id,t.name
总结:
基本用法 {% if 变量 %} : 当变量 为flast或者不存在的时候,渲染else(可选)部分,{% endif %}语句结束2. for 循环
class Student():
    def __init__(self,name,age):
        self.id = name
        self.age = age
stlist = []        
for i in range(5):
    st = Student('inx'+str(i),i+20)
    stlist.append(st)
template2 = '''
{% if stlist %}
    students:
    {% for st in stlist %}
    {% if forloop.first %} student {{forloop.counter}}:{{st.name}},{{st.age}} the bigbrather {% endif %}
    student {{forloop.counter}}:{{st.name}},{{st.age}}
    {% empty %}
    no students
    {% endfor %}
{% else %}
    no student!!!
{% endif %}
'''
t3 = Template(template2)
str = t3.render(Context({'stlist':stlist}))
print(str)
打印结果(忽略换行):
students:
student 1:,20 the bigbrather
student 1:,20
student 2:,21
student 3:,22
student 4:,23
student 5:,24
总结:
3. 过滤器
{{ name|lower }} : 将name的值全部改成小写 {{ my_list|first|upper }} #嵌套过滤,将myfist 首字母小写 {{ bio|truncatewords:”30” }} #截取前30个字符 {{ pub_date|date:”F j, Y” }} #格式化pub_date时间字符串4 ifequal/ifnoequal : 判断两个变量值是否相等
示例:
{% ifequal user currentuser %}Welcome!{% endifequal %} :判断user 与currentuser是否相等
{% ifequal section “community” %}Community{% else %}Site News{% endifequal %}
注意: ifequal/ifnoequal 只能比较模板变量,字符串,小数,整数,不能用字典类型、列表类型、布尔类型,直接比较 如:不支持{% ifequal variable True %}
5 注释:
单行注释:{# This is a comment #} ; 多行注释:
{% comment %}
This is a
multi-line comment.
{% endcomment %}
						


 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                 
            
                