使用tornado创建一个简单的图书介绍页面
2014-09-27 23:55
961 查看
这两天在看tornado user guide http://www.tornadoweb.org/en/stable/guide.html 中文翻译http://demo.pythoner.com/itt2zh/index.html
看完UI模块后就想用豆瓣的图书API来搞一个简单的图书介绍页面,也加深一下理解
一、创建一个web服务的入口文件 blockmain.py
这里是定义了一个主框架,其中里面的{% block header %}<h1>Burt's Books</h1>{% end %}是为了子类模板的继承的块(block),当子类继承了这个main.html,具体这个块里写什么内容由子类来实现,不实现的话就使用父类的默认 值,如是这里的<h1>Burt's Books</h1>,MainHandler类是render到一个index.html,那么接下来写一个index.html来继承这 个父类
BookModule 继承自tornado.web.UIModule,UI模块的使用是最后render_string()方法来把一个对象渲染到一个模板中去,我这里简单 的使用了豆瓣的图书api,先通过search来查询一下包含关键词的图书信息,返回第一条图书的id,再使用book api来查询该图书的具体信息,将这个具体图书的信息render到对应的模板
在templates 目录下创建modules目录,再下创建一个book.html,这里是具体的book要显示的内容框架
程序的执行是这样的
先通过路径‘/’来使用MainHandler类访问index.html---->index.html继承自 main.html---->index.html中的{% module Book(book) %}反过来查找blockmain.py中的Book对应的ui_modules---->ui_modules中将查询得到的book对象内容渲 染到modules下的book.html中,这样就把完整的内容呈现出来了,没有做前端…… 通过python blockmain.py启动服务,通过http://localhost:8000 来访问得到如下的网页
看完UI模块后就想用豆瓣的图书API来搞一个简单的图书介绍页面,也加深一下理解
一、创建一个web服务的入口文件 blockmain.py
<html> <head> <title>{{ page_title }}</title> <link rel="stylesheet" href="{{ static_url("css/style.css") }}" /> </head> <body> <div id="container"> <header> {% block header %}<h1>Burt's Books</h1>{% end %} </header> <div id="main"> <div id="content"> {% block body %}{% end %} </div> </div> <footer> {% set mailLink = '<a href="mailto:contact@burtsbooks.com">Contact Us</a>' %} {% set script = '<script>alert("hello")</script>' %} {% block footer %} <p> For more information about our selection, hours or events, please email us at{% raw mailLink %} <!-- {% raw script %} 这里将原样输出,也就是会弹一个框--> </p> {% end %} </footer> </div> <script src="{{ static_url("js/script.js") }}"></script> </body> </html>
这里是定义了一个主框架,其中里面的{% block header %}<h1>Burt's Books</h1>{% end %}是为了子类模板的继承的块(block),当子类继承了这个main.html,具体这个块里写什么内容由子类来实现,不实现的话就使用父类的默认 值,如是这里的<h1>Burt's Books</h1>,MainHandler类是render到一个index.html,那么接下来写一个index.html来继承这 个父类
class BookModule(tornado.web.UIModule): def render(self,bookname): doubanapi = r'https://api.douban.com/v2/book/' searchapi = r'https://api.douban.com/v2/book/search?q=' searchurl = searchapi+bookname searchresult = urllib2.urlopen(searchurl).read() bookid = json.loads(searchresult)['books'][0]['id'] bookurl = doubanapi+bookid injson = urllib2.urlopen(bookurl).read() bookinfo = json.loads(injson) return self.render_string('modules/book.html',book = bookinfo)
BookModule 继承自tornado.web.UIModule,UI模块的使用是最后render_string()方法来把一个对象渲染到一个模板中去,我这里简单 的使用了豆瓣的图书api,先通过search来查询一下包含关键词的图书信息,返回第一条图书的id,再使用book api来查询该图书的具体信息,将这个具体图书的信息render到对应的模板
在templates 目录下创建modules目录,再下创建一个book.html,这里是具体的book要显示的内容框架
├── blockmain.py └── templates ├── index.html ├── main.html └── modules └── book.html
程序的执行是这样的
先通过路径‘/’来使用MainHandler类访问index.html---->index.html继承自 main.html---->index.html中的{% module Book(book) %}反过来查找blockmain.py中的Book对应的ui_modules---->ui_modules中将查询得到的book对象内容渲 染到modules下的book.html中,这样就把完整的内容呈现出来了,没有做前端…… 通过python blockmain.py启动服务,通过http://localhost:8000 来访问得到如下的网页
相关文章推荐
- 如何使用Core Text创建一个简单的杂志图书App
- 如何使用Core Text创建一个简单的杂志图书App
- 使用Python的Tornado框架实现一个Web端图书展示页面
- 使用Python的Tornado框架实现一个Web端图书展示页面
- 如何使用Core Text创建一个简单的杂志图书App
- 使用Node.js创建一个简单的本地页面服务器
- 如何使用CSS栅格布局创建一个简单页面布局
- 如何使用Core Text创建一个简单的杂志图书App
- 如何使用Core Text创建一个简单的杂志图书App
- 如何使用Core Text创建一个简单的杂志图书App
- IronPython for ASP.NET:使用IronPython创建一个简单的Web页面
- 使用JFram创建一个简单的窗口
- 使用Spring来创建一个简单的工作流引擎
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 本文将引导你使用XNA Game Studio Express一步一步地创建一个简单的游戏
- .net创建一个ActiveX控件并使用的简单例子
- 使用ArcGIS Online创建一个简单的mash-up
- ASP动态网页创建一个简单页面
- 使用Spring来创建一个简单的工作流引擎
- AjaxPro框架使用整理(一) 一个简单的异步交互页面