- 7
- Jan
今天下午12点到15点本是Sql Server的课程设计,可是我却在机房看起了Django,还一边看一边在Windows XP上安装上了Python和Django进行调试。全英文的Django Book看的有点晕,不过好在可以上爱词霸查单词,真是充满乐趣啊。
下午大致看完了Django的第四章──Template System,这里做下笔记吧。
-----
Django有比较先进的模版系统,通过它,能使站点的Python代码和HTML代码分离。这样网站美工可以让别人来做,自己只管核心就行了:)
在django.template中,Django使用Context和Template这两个类来处理这些。
Template本身相当于一段HTML代码,由标准的HTML代码和特殊标记的部分组成,其中特殊标记的部分就是用Context来根据本身对应填充。
Template解析的过程有点像词典里面找解释的过程,Context算作一个词典,Template解析就是从Context里面找对应的值的过程,当然不仅仅是值,也可以是方法,只是这个方法不能有参数。
主要的“特殊标记”是:
- {{ variable }}:代表某个健,它会找到对应值,可以有子属性,如{{ variable.id }},同样只要传入词典variable就行,其他它会自己找,子属性也可以是方法或是其他,只是不能有参数,查找的顺序是:“词典”、“属性”、“方法”和“下标”;
- {% if ordered_warranty %}:if的判断语句,可以有else,用not、or、and来判断是否,但是不能同时在一行有and和or,如果一定要and和or,那只能用嵌套语句,要以{% endif %}结束;
- {% for item in item_list %}:模版里的For循环,虽然不能Break,但是有forloop这个有用的东西,要以{% endfor %}结束;
- {{ ship_date|date:"F j, Y" }}:过滤功能,将前面一个值以后面的形式来显示,可以多重过滤;
- {% ifequal user currentuser %}:这个用来判断两个值是否相等,也可用ifnotequal来判断是否相等,其中值不能用True/False,或者列表、词典;
- {# comment#}:这是注释,不支持多行注释;
除此之外,就是实际的应用了。使用Django,你可以将写好的HTML模版放在一个目录下,然后在settings.py设置好路径,接下来就可以用django.template.loader的.get_template方法来自动找到模版并解析之。非常灵活!
就看到这里了,明天继续!
放上一个最简单的例子:
>>> from django.template import Context, Template
>>> t = Template("My name is {{ name }}.")
>>> c = Context({"name": "Stephane"})
>>> t.render(c)
'My name is Stephane.'
个人感觉django模板系统更强大的是它的block,filter,在展示层设计上更容易保持灵活性。:-)
好像注释可以多行的,针对python注释,直接让它变量化,针对html注释,这个就是插入注释符好了。
昨天还未看到Template Inheritance这节,今天一看,Django的模板系统果然不仅仅如此,Block才是最强大的。
elo应该是前辈吧?看了你的个人Blog,有讲Ajax和Django,马上订阅了:)呵呵
忘记填邮箱了,结果内容全不见了,又要重新打...
你学习的速度真的是惊人......我要努力的追赶,嘿嘿
你那本gtk的书有几页,我有个猥琐的想法,帮我复印一本,然后寄给我,嘿嘿
那个打印GTK+这本书比较麻烦,上次我弄了半个月才弄好,你真的也要打印吗?如果不是很必要,我建议看电子版的。毕竟这不是像工具书一样要常常拿在手里的。
其实也很正常,mono基本上能通杀平台,只要资源够。关键是你有没有用到MS的库。