欢迎大家来到

import web

导入 web.py 模块。

urls = (

'/', 'index'

)

这是指定网站 url 的匹配规则,左边是正则表达式,右边是对应处理函数的名称。

class index:

def GET(self):

return "Hello, world!"

这便是处理请求的函数 index。GET 和 POST 是 HTTP 的两种请求方式,一般来说,GET 用于请求网页,而 POST 多用于提交表单。举个不严谨的栗子:当你在浏览器地址栏中输入一个地址并按下回车,就是发送了一个 GET 请求;而当你在打开的页面中输入用户名和密码,点击登录按钮,则是发送了一个 POST 请求。这里的 GET 函数描述了对于一个 GET 请求的处理方式:直接返回一个字符串。

if __name__ == "__main__":

app = web.application(urls, globals())

app.run()

最后,当这个代码文件被执行时,我们将创建一个 application,它会按照我们定义的 url 规则进行对应的处理,并在后台一直运行,独自等待请求的到来。

插一句:由于这个系列的文章侧重于“实战”,所以我只会搬开挡在道路正前方的石头,对于涉及的诸多细节无法面面俱到。即使这段简单的 hello world 代码中,关于 url 的正则匹配、GET / POST 的区别等,都可说上很多。但现在我只能略过。如有疑问,欢迎在QQ群和论坛上讨论。

仅仅在页面上显示 hello world 显然不能满足我的需求。我是想要一个关于电影的网站,那最起码得在页面上显示一些电影的信息吧。

一种显而易见的方法是,把要显示的信息拼成字符串,然后返回。

在代码里定义一组数据,一个由 dict 组成的 list:

movies = [

{

'title': 'Forrest Gump',

'year': 1994,

},

{

'title': 'Titanic',

'year': 1997,

},

]

然后把 GET 方法改为:

def GET(self):

page = ''

for m in movies:

page += '%s (%d)\n' % (m['title'], m['year'])

return page

movies 是一个包含了影片标题和年代信息的 list。在 GET 方法中,把 movies 里每一条内容取出来,拼接成一整个字符串,作为结果返回。

如果你之前已经运行了 code.py,刷新页面将会看到新的内容:

Forrest Gump (1994)

Titanic (1997)

是不是有点类似在命令行输出结果或者在文本文件中存储内容?但作为一个网页,如果以后要添加更多的显示效果和交互功能,这样写肯定是要跪。好在 web.py 给我们提供了一种更方便的页面展示方式 — 模板。

刚才我们用的方法类似于在 Python 里写 HTML,这是比较痛苦的。而 web.py 的模板是让你能在 HTML 里写 Python。

首先我们需要在代码里指定模板:

render = web.template.render('templates/')

在 GET 方法里调用模板:

def GET(self):

return render.index()

模板的返回值就是一个处理好的页面,所以直接 return 就可以了。

然后在项目文件夹,也就是 code.py 所在的目录下新建一个叫做 templates 的目录,里面新建一个 index.html 文件作为模板。注意这里的 templates、index 命名都需要与你代码里的设定一致。如果你是吧一个 muban 文件夹下的 shouye.html 作为模板,那相应代码就应改为:

render = web.template.render('muban/')

render.shouye()

在模板 index.html 里写下:

Crossin's Movie Site

h1 是 HTML 中表示标题的标签。保存 code.py 和 index.html 后刷新页面,你将会看到一行很大的标题:

Crossin's Movie Site

这表示模板已经生效了。但 movies 的信息仍然没有显示。如果需要在模板中显示信息,需要将信息传递给模板:

def GET(self):

return render.index(movies)

然后在模板里,接收并使用传递进来的参数:

$def with (movies)

Crossin's Movie Site

$movies

web.py 模板中的 $def with 表示这个模板中将要使用的变量。注意务必把它放在模板的第一行。如果有多个参数,需要全部依次列在括号中。

$movies 则表示获取 movies 变量的值。

保存刷新,页面上已经可以看到我们在代码中定义的 movies 信息了,但还是 list 直接转换字符串的效果。

更近一步地,我们可以在模板中对数据进行操作,让它们看起来更顺眼一点:

$for movie in movies:

$movie['title'], $movie['year']

模板中的语法和 Python 类似,只是前面需要增加 $ 符号。缩进依然需要按照 Python 中的规范。li 是 HTML 中列表的标签。

这时候,页面上已经就能以列表的形式显示电影信息了。尽管依然简陋,但一切才刚刚开始,我们的征途是星辰大海。

恭喜您在Python自学的道路上又坚持了一天,我们目前学习的知识比之前的要复杂一些,但是也比之前的有趣多了,所以希望大家跟上我们的步伐,继续加油!

好啦,今天的分享到这里就结束了,希望大家持续关注马哥教育官网,每天都会有大量优质内容与大家分享!

python 网页上显示数据_Python实战【第二节】在网页上显示信息相关推荐

  1. python3 requests 动态网页post提交数据_Python爬虫三:动态网页爬虫

    1. 利用API爬取数据 有时,使用BeautifulSoup解析和提取数据后,输出结果为空.这是由于网页使用了另一种加载数据的方式--通过API加载数据.API(Application Progra ...

  2. python爬取flash数据_python爬虫: 爬取flash播放页面的信息

    我们通过查看知道flash类型的网页采取文件格式是amf类型的 AMF(Action Message Format) 是Flash与服务端通信的一种常见的二进制编码模式,其传输效率高,可以在HTTP层 ...

  3. R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战

    R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战 目录 R语言使用gg

  4. MySQL数据库命令(第二节)

    MySQL数据库命令(第二节) 文章目录 前言 1.常用函数 2.order by 子句 3.limit子句 4.模糊查询 5.多表连接查询 总结 前言 常用函数 1.聚合函数: (1)AVG (平均 ...

  5. python 获取网页表格数据_python实战4获取tushare数据

    python 4 实战4 获取Tushare数据 阅读之前请注意: 代码都为红色.由于公众号宽度不够,没有特别注明,即使换行都是同一句代码,中间没有换行符.如果是两行代码,会用空行隔开. SQL语句请 ...

  6. python如何连接自己电脑服务器_Python远程连接windows服务器并上传数据

    [芝麻IP代理]大数据时代下,我们对于Python的应用真的是淋漓尽致,第一次玩服务器,电脑端远程连接能连上,可SSH却始终不行,后来才发现,这根本不是一种东西,SSH得在服务器上搭建SSH seve ...

  7. python非数值型数据_Python机器学习实战:如何处理非数值特征

    机器学习实战:这里没有艰深晦涩的数学理论,我们将用简单的案例和大量的示例代码,向大家介绍机器学习的核心概念.我们的目标是教会大家用Python构建机器学习模型,解决现实世界的难题. 本文来自<数 ...

  8. python手机远程控制电脑访问网页_Python 实战系列-微信或网页远程控制电脑

    Python 实战系列-微信或网页远程控制电脑 本系列课程为Python实战系列课程:使用微信控制电脑,使用Python的Web框架Flask搭建网页, 并使用网页控制电脑:使用wxPython编写图 ...

  9. 数据分析从零到精通第三课 python自动化和BI数据可视化实战

    05 效率提升:如何通过邮件报表释放人力 本课时主要分享从零搭建数据邮件日报系统的方法,从而满足业务方的定期数据需求.希望通过本课时的介绍,你可以立刻在自己机器上实践定时邮件发送的任务. 邮件日报的业 ...

  10. python删除一列数据_python删除txt第一列数据库

    带你读<Python数据分析与数据化运营(第2版)>之一:Python和数据化运营 点击查看第二章点击查看第三章Python数据分析与数据化运营(第2版) 宋天龙 著 第1章 Python ...

最新文章

  1. java 游戏视频_Java swing实现的小游戏24点游戏源码附带视频指导教程
  2. pic单片机内部时钟校准c语言,实例讲解PIC单片机的时钟设置
  3. 开发过程中常用的 dos 命令
  4. lecture2-NN结构的主要类型的概述和感知机
  5. 力扣——合并K个排序链表
  6. Python学习案例之Web版语音合成播报
  7. 【贪心 哈夫曼树】bzoj2923: [Poi1998]The lightest language
  8. 【Java】java 读写 json文件,java读写文件
  9. 十分钟读懂 黑客如何入侵Windows 操作系统
  10. boost库asio错误码
  11. TwinCAT3 控制器PLC之间EAP通讯3-从机发送方式2
  12. java B2B2C Springcloud电子商城系统- Gateway初体验
  13. 路由器计算机无法上网,连接路由器无法上网怎么回事_电脑连接路由器不能上网如何处理-win7之家...
  14. F5 LTM1600 HA
  15. Qt中的UI文件介绍
  16. emqttd配置_EMQ(emqttd)的介绍和安装
  17. es6 取数组的第一个和最后一个_es6常用数组操作及技巧汇总
  18. 模仿其他游戏进行内购
  19. 熬之滴水穿石:Servlet--Web万物之源(1)
  20. ubuntu无法挂载大容量U盘

热门文章

  1. 网站整站下载工具推荐【Z】
  2. LoadRunner基础入门教程
  3. 万兆网络传输速度测试_Intel万兆网卡的真实测试万兆速度的方法
  4. 批处理之 FOR循环
  5. 控制系统|反馈系统的稳定性分析
  6. java wed汽车4s店销售管理系统
  7. Python自制成语接龙小游戏
  8. 软件工程 选课系统的uml类图_选课系统的UML建模
  9. AutoCAD 2019 汉化包
  10. Autocad ET扩展工具汉化