前次容易引见了wb.py。今日先来简略说明下阿谁hlloworld页面的代码:
importwb
导入wb.py模块。
urls=(
/,indx
)
这是指定网站url的般配准则,左侧是正则表白式,右侧是对应处置函数的称呼。
classindx:
dfGET(slf):
rturnHllo,world!
这即是处置哀求的函数indx。GET和POST是HTTP的两种哀求方法,正常来讲,GET用于哀求网页,而POST多用于提交表单。举个不谨严的栗子:当你在涉猎器地点栏中输入一个地点并按下回车,便是发送了一个GET哀求;而当你在翻开的页面中输入用户名和暗码,点击登录按钮,则是发送了一个POST哀求。这边的GET函数描摹了对于一个GET哀求的处置方法:直接返回一个字符串。
if__nam__==__main__:
app=wb.application(urls,globals())
app.run()
末了,当这个代码文献被履行时,咱们将建立一个application,它会遵从咱们界说的url准则实行对应的处置,并在靠山一贯运转,单独等候哀求的到来。
插一句:由于这个系列的文章注重于“实战”,以是我只会搬开挡在道路正前哨的石头,对于触及的诸多细节没法八面玲珑。纵然这段容易的hlloworld代码中,对于url的正则般配、GET/POST的差别等,均可说上许多。但此刻我只可略过。若有疑义,招待在QQ群和论坛上商议。
只是在页面上显示hlloworld显然不能餍足我的需求。我是想要一个对于片子的网站,那最最少得在页面上显示一些片子的讯息吧。
一种不言而喻的办法是,把要显示的讯息拼成字符串,而后返回。
在代码里界说一组数据,一个由dict构成的list:
movis=[
{
titl:ForrstGump,
yar:,
},
{
titl:Titanic,
yar: ,
},
]
而后把GET办法改成:
dfGET(slf):
pag=
forminmovis:
pag+=%s(%d)\n%(m[titl],m[yar])
rturnpag
movis是一个包括了影片题目和年头讯息的list。在GET办法中,把movis里每一条实质掏出来,拼接成一全体字符串,做为完毕返回。
假设你以前曾经运转了cod.py,革新页面将会看到新的实质:
ForrstGump()
Titanic()
是不是有点近似在指示行输出完毕也许在文本文献中储备实质?但做为一个网页,假设之后要增加更多的显示成就和交互机能,云云写必定是要跪。幸亏wb.py给咱们供给了一种更便利的页面展现方法--模板。
刚才咱们用的办法近似于在Python里写HTML,这是对照苦痛的。而wb.py的模板是让你能在HTML里写Python。
首先咱们需求在代码里指定模板:
rndr=wb.tmplat.rndr(tmplats/)
在GET办法里挪用模板:
dfGET(slf):
rturnrndr.indx()
模板的返回值便是一个处置好的页面,以是直接rturn就可以够了。
而后在项目文献夹,也便是cod.py地方的目录下新建一个叫做tmplats的目录,内里新建一个indx.html文献做为模板。提防这边的tmplats、indx定名都需求与你代码里的设定一致。假设你是吧一个muban文献夹下的shouy.html做为模板,那响应代码就应改成:
rndr=wb.tmplat.rndr(muban/)
rndr.shouy()
在模板indx.html里写下:
h1CrossinsMoviSit/h1
h1是HTML中示意题目的标签。保管cod.py和indx.html后革新页面,你将会看到一行很大的题目:
CrossinsMoviSit
这示意模板曾经奏效了。但movis的讯息仍旧没有显示。假设需求在模板中显示讯息,需求将讯息传播给模板:
dfGET(slf):
rturnrndr.indx(movis)
而后在模板里,领受并行使传播进入的参数:
$dfwith(movis)
h1CrossinsMoviSit/h1
$movis
wb.py模板中的$dfwith示意这个模板中将要行使的变量。提防必须把它放在模板的第一行。假设有多个参数,需求全体顺序列在括号中。
$movis则示意猎取movis变量的值。
保管革新,页面上曾经能够看到咱们在代码中界说的movis讯息了,但照样list直接调动字符串的成就。
更近一步地,咱们能够在模板中对数据实行操纵,让它们看起来更顺心一点:
$formoviinmovis:
li
$movi[titl],$movi[yar]
/li
模板中的语法和Python近似,不过前方需求增加$标识。缩进照样需求遵从Python中的样板。li是HTML中列表的标签。
这时间,页面上曾经就可以以列表的气象显示片子讯息了(封面图所示)。只管照样浅陋,但一起才刚才开端,咱们的征程是星斗大海。
(关联代码文献已上传在论坛的帖子里)
#====Crossin的编程课堂====#