tornado一起来-动态数据(mongodb)
继上篇模版之后,是不是感觉越来越溜了?这么溜的东西一直在模拟数据,这不科学!下面开始简单的动态数据(主角**数据库**登场)。
主要内容参考[《Introduction to Tornado》中文翻译 ](http://demo.pythoner.com/itt2zh)
走起!
文件照着上篇的《tornado一起来-模版继承》来!
中间加几句!贴上代码
main.py
```
import os.path
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from pymongo import MongoClient
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class Application(tornado.web.Application):
def __init__(self):
handlers = [(r'/', RecommendedHandler)]
settings = dict(
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
ui_modules={"Book": BookModule},
debug=True,
)
conn = MongoClient("localhost", 27017)
self.db = conn["bookstore"]
tornado.web.Application.__init__(self, handlers, **settings)
class RecommendedHandler(tornado.web.RequestHandler):
def get(self):
coll = self.application.db.books
books = coll.find()
self.render(
"index.html<span class="hljs-string">",
page_title="</span>Burt's Books | Recommended Reading<span class="hljs-string">",
header_text="</span>Recommended Reading<span class="hljs-string">",
books=books
)
class BookModule(tornado.web.UIModule):
def render(self, book):
return self.render_string('modules/book.html', book=book)
if __name__ == '__main__':
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()</span>
```
细心的人才估计已经发现区别了
```
class Application(tornado.web.Application):
def __init__(self):
handlers = [(r'/', RecommendedHandler)]
settings = dict(
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path=os.path.join(os.path.dirname(__file__), "static"),
ui_modules={"Book": BookModule},
debug=True,
)
conn = MongoClient("localhost", 27017)
self.db = conn["bookstore"]
tornado.web.Application.__init__(self, handlers, **settings)
```
封装了初始化,并且在里面加入了mongo的连接。
```
class RecommendedHandler(tornado.web.RequestHandler):
def get(self):
coll = self.application.db.books
books = coll.find()
self.render(
"index.html<span class="hljs-string">",
page_title="</span>Burt's Books | Recommended Reading<span class="hljs-string">",
header_text="</span>Recommended Reading<span class="hljs-string">",
books=books
)</span>
```
Handler里面增加mongo的查询
```
coll = self.application.db.books
books = coll.find()
```
至于mongo怎么装的,这个去问度娘。
数据是这样的

<font color="#ff0000">需要注意的地方是 pymongo 貌似改版了,使用方法与教程的不同。</font>
```
from pymongo import MongoClient
conn = MongoClient("localhost", 27017)
```
下面可以完善下增删改查功能,及mysql版的。
评论区