《python》学习笔记(Day7),采用MVC模式的Web应用例子(续)

    本例子的第二部分:用户界面

编写页面视图代码,创建用户界面。根据MVC模式,这里实际是编写一个小型代码库yate.py,其中包括生成HTML的函数,不过HTML代码放在模板中,与python代码分离。导入Python的string模块中Template函数实现模板渲染。

一、Python代码块。

(1)string.Template。

     string模块中的template类,用于设定一个固定的字符串格式:'There are $x and $y',$为可替换部分的标识符。便于把内容和格式分开考虑,常用于定制模板。使用方法:s=Template('the name is $x.') ,x='xiaoming'。

(2)代码:

from string import Template      

#该函数需要一个字符串(缺省值text/html)作为参数,用来创建一个CGI'content-type'

def start_response(resp='text/html'):      

    return('content-type:'+resp+'\n\n')

#该函数需要一个字符串作为参数,用在HTML最前面的标题。页面模板代码本身存储在单独的文件'templates/header.html'中,可根据需要通过调用此函数替换标题。

def include_header(the_title):
    with open('templates/header.html') as headf:   #打开模板文件HTml,读入文件
        head_text=headf.read()
    header=Template(head_text)
    return(header.substitute(title=the_title))      #换入所提供的标题

#该函数用来创建HTML页面的尾部。页面模板代码本身存储在单独的文件'templates/footer.html'中,参数用于动态的创建一组HTML链接标记,参数是一个字典
def include_footer(the_links):
    with open('templates/footer.html') as footf:   #打开模板文件HTml,读入文件
        foot_text=footf.read()
    link_string=''                                  
    for key in the_links:                    # the_links中所提供的HTML链接字典,转换为一个字符串,再换入模板
        link_string+='<a href="'+the_links[key]+'">'+key+'</a>&nbsp;&nbsp;&nbsp;&nbsp;'
    footer=Template(foot_text)
    return(footer.substitute(links=link_string))

#该函数返回表单最前面的HTML。调用时,允许指定URL(表单数据发送到这个URL),还允许指定所使用的方法
def start_form(the_url,form_type="POST"):
    return ('<form action="'+the_url+'"method="'+form_type+'">')

#该函数返回表单末尾的HTML标记。调用时,允许定制表单末尾’Submit‘按钮的文本
def end_form(submit_msg="Submit"):
    return ('<p></p><input type=submit value="'+submit_msg+'">')

#该函数创建一个HTML单选钮,调用参数分别为单选钮名和值,均为必要参数。
def radio_button(rb_name,rb_value):
    return('<input type="radio"name="'+rb_name+'"value="'+rb_value+'">'+rb_value+'<br/>')

#该函数的参数为一个项列表,把列表转换为一个HTML无序列表。
def u_list(items):
    u_string='<ul>'
    for item in items:    #for循环实现列表转换功能,每迭代一次向ul元素增加一个Li元素
        u_string+='<li>'+item+'</li>'
    u_string+='</ul>'
    return(u_string)

#该函数创建并返回一个HTML标题标记,默认为2级标题
def header(header_text,header_level=2):
    return ('<h'+str(header_level)+'>'+header_text+'<h'+str(header_level)+'>')

#用HTML段落标记包围一个文本段(字符串)
def para(para_text):
    return('<p>'+para_text+'</p>')

二、控制器。

(1)webapp目录结构。

    创建文件夹webapp,合理组织文件夹结构。cgi-bin:存放所有的代码;data:存放运动员数据文本;templates:存放下载的html模板;images:页面中用到的图像文件。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值