首页 > 代码库 > 实习生的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) 



跑拉跑拉!明天考完六级再写。

话说!来深圳四天感觉真要命阿,我要回广州!!!!