python web py入门(3)-模板
WEB服务器在生成HTML网页时,有两个选择,一个是从代码里嵌入HTML来生成HTML页面返回,另一个是从HTML代码里嵌入执行代码来生成HTML页面返回。这两种方式,其实都有使用,比如在嵌入式系统里,往往就是使用C或C++来生成HTML页面,这些是嵌入在C++代码里面的。但是这种方式是有它的缺点的,比如一个淘宝上页面,其实很多图片资源和网页的样式是固定的,只要少部分数据需要从数据库里找出来,再填充生成的,这时变动的数据非常小,就可以把固定的数据变成一个模块。当需要修改图片资源时,就不方便了。
同样,在 Python 中写 HTML 不是聪明的选择,相反在 HTML 中写 Python 则有趣的多。幸运的是,web.py 让这件事情做得简单而又漂亮。
给模板新建一个目录(命名为 templates),在该目录下新建一个以 .html 结尾的文件,内容如下:
<em>Hello</em>, world!
你也可以在模板中使用 web.py 模板支持代码:
$def with (name)
$if name:
I just wanted to say <em>hello</em> to $name.
$else:
<em>Hello</em>, world!
如上,该模板看起来就像 python 文件一样,除了顶部的 def with (表示从模板将从这后面取值)和总是位于代码段之前的$。当前,template.py 首先请求模板文件的首行 $def 。当然,你要注意 web.py 将会转义任何任何用到的变量,所以当你将 name 的值设为是一段 HTML 时,它会被转义显示成纯文本。如果要关闭该选项,可以写成 $:name 来代替 $name。
回看再看 TestTemplate.py。在第一行之下添加:
render = web.template.render('templates/')
这会告诉web.py到你的模板目录中去查找模板。然后把 index.GET改成: 告诉 web.py 在你的模板目录下查找模板文件。修改 index.GET :
name = 'Bob'
return render.index(name)
('index' 是模板的名字,'name' 是传入模板的一个参数)
访问站点它将显示 hello Bob。
但是如果我们想让用户自行输入他的名字,么办?如下:
i = web.input(name=None)
return render.index(i.name)
访问 / 将显示 hello world,访问 /?name=Joe 将显示 hello Joe。
URL 的后面的 ? 看起来不好看?修改下 URL 配置:
'/(.*)', 'index'
然后修改下 index.GET:
def GET(self, name):
return render.index(name)
现在访问 /Joe 看看,它会显示 hello Joe。
例子的源码:
#python 3.6
#蔡军生
#http://blog.csdn.net/caimouse/article/details/51749579
#
import weburls = ('/(.*)', 'index'
)app = web.application(urls, globals())
render = web.template.render('templates/')class index:def GET(self, name):i = web.input(name=None)return render.index(i.name)if __name__ == "__main__":app.run()
需要模板的目录里创建一个文件sample\templates\index.html,它内容如下:
$def with (name)$if name:I just wanted to say <em>hello</em> to $name.
$else:<em>Hello</em>, world!
然后运行程序之后,就可以在浏览器里输入连接地址:http://127.0.0.1:8080/?name=caimouse, 输出结果如下:
比特币源码入门教程
https://edu.csdn.net/course/detail/6998
深入浅出Matplotlib
https://edu.csdn.net/course/detail/6859
深入浅出Numpy
http://edu.csdn.net/course/detail/6149
Python游戏开发入门
python web py入门(3)-模板相关推荐
- python web py入门-1-web.py简介和安装
背景 记录python web.py开发入门学习的过程,主要想通过这个入门,然后继续去学习python Django框架开发课程.目前我的个人技能状态是,稍微懂点selenium webUI自动化测试 ...
- python web py入门(6)-webpy在模板里使用code代码段错误的问题
像下面这段代码在WEBPY 0.40里会发现出错: $def with (page_posts, page_count, page)$code:grace = 5range = grace * 2st ...
- python web py入门(4)-从数据库读取数据显示到网页
在你开始使用数据库之前,确保你已经安装了合适的数据库访问库.比如对于MySQL数据库,使用mysql-connector客户端来连接. 下载Mysql数据并安装: 从下面的连接里下载到Mysql数据库 ...
- python web py入门(1)-web.py简介和安装
1.web.py 简介 web.py是一个轻量级的python web框架,简单而且功能强大.相对flask和Django,web.py更适合初学者来学习和了解web开发的基础知识. 2.web.py ...
- python web py入门(2)-URL处理
本文介绍URL映射,在介绍映射之前,我们先了解下什么是URL? URL(Uniform/Universal Resource Locator的缩写,统一资源定位符)是对可以从互联网上得到的资源的位置和 ...
- python web py入门-7-响应处理(下)
前面我们介绍了响应处理的两种方式,这边学习如何从数据库获取结果.简单来说,就是从数据库查询数据并显示在前端html页面上.因为涉及到数据库,所以,我们这里先要安装一个数据库软件,这里用mysql,具体 ...
- python web py入门(13)- 实现发贴到论坛
在前面已经说明白了实现登录论坛,当你进入论坛之后,一般就是想发表文章,简称为贴子,那么怎么样把你的文章从浏览器里发送给WEB服务器呢?其实这个过程还是比较复杂的,首先要在浏览器里实现一个编辑器,它是使 ...
- python web py入门-4-请求处理(上)
这篇我们来介绍一下请求处理过程.其实,在前面python中requests做接口自动化的系列讲过请求和响应.服务器需要对客户端发送的请求,进行解析和处理.我们在前面文章介绍的URL映射,每次输入新的U ...
- python web py入门(14)- 实现从论坛里查看某一主题
前面介绍了怎么样发贴到论坛,其实论坛之所以吸引人,是因为论坛可以让所有人围绕这一个主题进行深入的讨论和学习.因此,实现论坛里,必须有查看一个主题内容和它所有的评论,在这里就介绍这个过程的实现. 与前面 ...
最新文章
- 【正一专栏】亚冠抽签点评——上港令人期待
- r语言默认工作目录document_使用 Docker 和 Nginx 实现简单目录索引服务
- 浏览器还 data URI协议
- G1与CMS的区别是什么
- redis缓存雪崩和缓存穿透
- php如何抓取一行的内容,提取一行作为对象 - PHP 7 中文文档
- AD19 add pins to nets错误_为什么我认为Rust的Result错误处理方式不如Exception
- arcgis server mysql_ArcGIS Server 10.1发布要素服务时遇到的数据库注册问题总结 (二)...
- Fastlane-iOS(调研篇)
- java 异步处理数据格式_spring mvc对异步请求的处理
- [Python知识图谱] 四.Python和Gephi实现中国知网合作关系知识图谱
- 音视频学习(三)——sip协议
- android xposed安装教程,Android 10机型安装Xposed框架教程
- 网络工程师和网络运维工程师,有什么区别?
- 访问者模式---萝卜青菜各有所爱
- UE4 制作玻璃材质总结
- 嵌入式硬件 软件测试,嵌入式系统软硬件功能测试方法及性能评估研究
- java开发人员的小习惯
- Shutdown自定义自动关机软件
- Flex Air 实现桌面尺子(Ruler)工具