海上月明

editer by sun
posts - 162, comments - 51, trackbacks - 0, articles - 8
   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理

DjangoBook note

Posted on 2006-11-28 20:27 pts 阅读(256) 评论(0)  编辑  收藏 所属分类: Django

DjangoBook note
模板
1、用 html 文件保存,设计的变量用 {{value_name}} 填充
2、需 from django.template import Template,Context 导入库
3、t=Template( 模板文件名 ) 
 c=Context( 模板变量内容 )
 t.render(c)# 可以输出模板内容
4、   下面这段不理解什么意思
 To prevent this, set a function attribute alters_data on the method. The template system won ’ t execute a method if the method has alters_data=True set. For example:
 def delete(self):
  # Delete the account
 delete.alters_data = True
5、 Context 对象支持 push()/pop() 方法
6、 模板文件中的标签:
 没有 elseif;
 For 循环中没有 break 和 continue
 For 循环中的几个属性:
    forloop.counter     # 当前循环的次数,从 1 开始
    forloop.counter0    # 当前循环的次数,从 0 开始
    forloop.revcounter        # 当前循环剩余次数,从总循环次数递减
    forloop.revcounter0       # 当前循环剩余次数,从总循环次数 -1 递减
    forloop.first             #boolean 值,如果为第一次循环,值为真
    forloop.last              # 同上
    forloop.parentloop        # 引用父循环的 forloop 对象
 ifequal A B  # AB 只能是模板变量、字符串、数字
    pass #如果 A B 相等则执行
 else
    pass #否则执行
 endifequal
 {#   #}      #注释
 {{A|B:”s”}}         # 对 A 执行 B 过滤, B 过滤可以有参数
   几个过滤器:
   addslashes    加反斜杠
   Date          格式化日期为字符串
   escape        转换为网页编码
   length        长度
7、 模板不能建立一个变量或者改变一个变量的值;不能调用原生的 python 代码
8、 在 setting.py 中制定模板文件存放的目录( EMPLATE_DIRS ),例:
 TEMPLATE_DIRS = (
  '/home/django/mysite/templates',
 )
 不要忘了最后的逗号,除非你将序列()换成列表 [] ,但效率会降低;目录用 / 间隔
9、 使用模板:
 from django.shortcuts import render_to_response
 import datetime

 def current_datetime(request):
  now = datetime.datetime.now()
 return render_to_response('current_datetime.html', {'current_date': now})
 可以将填充到模板的变量换为locals(),但性能会有所下降,如
 def current_datetime(request):
  current_date = datetime.datetime.now()
    return render_to_response('current_datetime.html', locals())
10、如果要引用设定的模板目录中子目录的模板文件 ;
 t = get_template('dateapp/current_datetime.html')
11、模板可嵌套,模板文件名可用变量
 {% include 'includes/nav.html' %}
 {% include template_name %}
12、模板继承,使用 extends 和一个特殊的标签 block ,例:
 #base.html
 <head>
 <title>
  {% block title %}标题{% endblock %}
 </title>
 </head>
 <body>
 {% block content %}内容{% endblock %}
 {% block footer %} 页尾{% endblock %}
 </body>
 </html>
  下面的模板继承自 base.html
 {% extends "base.html" %}     #这一行必须是第一个模板标签行
 {% block title %} 我的标题 {% endblock %}
 {% block content %}
  <p> 我的内容 </p>
 {% endblock %}   #不一定要重新定义父模板中的每个模板块
 通过 block.super 引用父模板块内容


只有注册用户登录后才能发表评论。


网站导航: