首页 > 代码库 > 实习生的Django[2](模板)
实习生的Django[2](模板)
快要下班了,今天研究了一整天日文翻译(我的项目与日文息息相关阿),累得要死,在下班之前偷偷总结一下今天学的Django。
因为不能花很多时间去学Django,要均衡~所以今天就之做了一下模板。
因为上一次写的[1]说的视图,今天很自然就开始作模板了。
什么叫模板?
玩过C++的人都知道(c++三宝:template,stl,class),但是为了博文看起来好像作者有在写,我就用简单地话解释一下:我们面试都非常讨厌自我介绍(好像面试官不会看简历的样子?),为此我只能将:我叫XXX,来自XXX,特长XXX。加在我的“自我”介绍那里,模板也几乎就是这么回事了。
“我叫XXX,来自XXX,特长XXX”就是一个自我介绍“模板”,每次我们只需要填充其中最基本的信息即可
模板的作用?
实际上我觉得这个问题好像意义不大,模板的作用在于减少重复的工作,比如,你做一系列相似的工程(比如A+B,A*B,A-B,A/B),自己YY一下就知道模板存在意义了。
模板示例
首先创建今天的工程,django_admin.py stratproject worldtime
我们今天做的例子就是做一个简单地显示时间的网页
在此之前,我们需要用一下模板,因为我是一个很肤浅的人(所以博客没有人气~只有你在看)
所以我们做的很简单,找到在我们工程worldtime下看到manage.py
python manage.py shell
进入到一个我们熟悉的python交互式界面了,但是直接python就不行~!
听闻这是一个蠢方法~将就吧!
首先还是引包
from django import template然后我们定义我们的模板
t = template.Template('My name is {{ name }},come from {{ province }},hobby is {{ hobby }}')注意{{}}就是定义我们要填充的东西。
下面我们来构造再填充一下,作者无耻地用自己来做例子了~
c=template.Context({'name':'yaolong','province':'Guangdong','hobby':'program'})print t.render(c)
结果就是:
My name is yaolong,come from Guangdong,hobby is program好了,来到这里,我们又要开始写views.py了,和上一节一样。
我们这次定义一个worldtime函数
#!/usr/bin/env python # coding=utf-8 #******************************************************** # > OS : Linux 3.11.10-301.fc20.x86_64 Fedora20 # > Author : yaolong # > Mail : dengyaolong@yeah.net # > Time : 2014年06月13日 星期五 16时45分42秒 #******************************************************** from django.http import HttpResponse import datetime def worldtime(request,offset): try: delt=int(offset) except ValueError: delt=0 cur_time=datetime.datetime.now() deltaH=datetime.timedelta(hours=delt) cur_time+=deltaH html="<html><body>Time: %s"%cur_time return HttpResponse(html)
里面用到了一些很坑爹的函数,还用了捕捉异常,这实在是难堪阿。
解释一下,datetime.datetime.now()是用来获取当前时间的,但是太精准了!不好看,可以用正则表达式恰掉,我时时刻刻都无比怀念shell的#{}~
之后创建一个时间差,加起来输出,注意到一个很挫的html
之后我们再urls.py里面配置一下吧!
from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() from views import worldtime urlpatterns = patterns('', # Examples: # url(r'^$', 'worldtime.views.home', name='home'), # url(r'^blog/', include('blog.urls')), #url(r'^admin/', include(admin.site.urls)), (r'^time/([0-9]{0,2})',worldtime) , )
正则表达式是指http://127.0.0.1:8000/time/+0~9的数字出现0~2次,打圆括号是为了传给offset的
等等!好像没有见到任何模板呢!跑题了呢!
但是快下班了!快放假了!心情好激动!先留下一个没有责任心的版本。
#!/usr/bin/env python # coding=utf-8 #******************************************************** # > OS : Linux 3.11.10-301.fc20.x86_64 Fedora20 # > Author : yaolong # > Mail : dengyaolong@yeah.net # > Time : 2014年06月13日 星期五 16时45分42秒 #******************************************************** from django.http import HttpResponse from django.template import Template,Context import datetime def worldtime(request,offset): try: delt=int(offset) except ValueError: delt=0 cur_time=datetime.datetime.now() deltaH=datetime.timedelta(hours=delt) cur_time+=deltaH t=Template("<html><body>Time: {{time}}") c=Context({'time':cur_time}) html=t.render(c) return HttpResponse(html)
跑拉跑拉!明天考完六级再写。
话说!来深圳四天感觉真要命阿,我要回广州!!!!