用tornado做网站(2)
既然摆好了一个网站的架势,下面就可以向里面填内容。
连接数据库
要做的网站,有数据库支持,虽然这不是必须的,但是如果做一个功能强悍的网站,数据库就是必须的了。
接下来的网站,我暂且采用mysql数据库。
怎么连接mysql数据呢?其方法跟《mysql数据库(1)》中的方法完全一致。为了简单,我也不新建数据库了,就利用已经有的那个数据库。
在上一节中已经建立的文件夹methods中建立一个文件db.py,并且参考《mysql数据库(1)》和《mysql数据库(2)》的内容,分别建立起连接对象和游标对象。代码如下:
#!/usr/bin/env python
# coding=utf-8
import MySQLdb
conn = MySQLdb.connect(host="localhost", user="root", passwd="123123", db="qiwsirtest", port=3306, charset="utf8") #连接对象
cur = conn.cursor() #游标对象
用户登录
前端
很多网站上都看到用户登录功能,这里做一个简单的登录,其功能描述为:
当用户输入网址,呈现在眼前的是一个登录界面。在用户名和密码两个输入框中分别输入了正确的用户名和密码之后,点击确定按钮,登录网站,显示对该用户的欢迎信息。
用图示来说明,首先呈现下图:
用户点击“登录”按钮,经过验证是合法用户之后,就呈现这样的界面:
这里用的static_url是一个函数,它是tornado模板提供的一个函数。用这个函数,能够制定静态文件。之所以用它,而不是用上面的那种直接调用的方法,主要原因是如果某一天,将静态文件目录statics修改了,也就是不指定statics为静态文件目录了,定义别的目录为静态文件目录。只需要在定义静态文件目录那里修改(定义静态文件目录的方法请参看上一节),而其它地方的代码不需要修改。 先写一个测试性质的东西。 用编辑器打开statics/js/script.js文件,如果没有就新建。输入的代码如下: 由于本教程不是专门讲授javascript或者jquery,所以,在js代码部分,只能一带而过,不详细解释。 上面的代码主要实现获取表单中id值分别为username和password所输入的值,alert函数的功能是把值以弹出菜单的方式显示出来。 是否还记得在上一节中,在url.py文件中,做了这样的设置: 现在就去把假设有了的那个文件建立起来,即在handlers里面建立index.py文件,并写入如下代码: 当访问根目录的时候(不论输入 上面的文件保存之后,回到handlers目录中。因为这里面的文件要在别处被当做模块引用,所以,需要在这里建立一个空文件,命名为 至此,一个带有表单的tornado网站就建立起来了。读者可以回到上一级目录中,找到server.py文件,运行它: 如果读者在前面的学习中,跟我的操作完全一致,就会在shell中看到上面的结果。 打开浏览器,输入编写js
$(document).ready(function(){
alert("good");
$("#login").click(function(){
var user = $("#username").val();
var pwd = $("#password").val();
alert("username: "+user);
});
});
hanlers里面的程序
from handlers.index import IndexHandler #假设已经有了
url = [
(r'/', IndexHandler),
]
#!/usr/bin/env python
# coding=utf-8
import tornado.web
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
localhost:8000
,还是http://127.0.0.1:8000
,或者网站域名),就将相应的请求交给了handlers目录中的index.py文件中的IndexHandler类的get()方法来处理,它的处理结果是呈现index.html模板内容。render()
函数的功能在于向请求者反馈网页模板,并且可以向模板中传递数值。关于传递数值的内容,在后面介绍。__init__.py
。这个文件非常重要。在编写模块一节中,介绍了引用模块的方法。但是,那些方法有一个弊端,就是如果某个目录中有多个文件,就显得麻烦了。其实python已经想到这点了,于是就提供了__init__.py
文件,只要在该目录中加入了这个文件,该目录中的其它.py文件就可以作为模块被python引入了。$ python server.py
Development server is running at http://127.0.0.1:8000
Quit the server with Control-C
http://localhost:8000
或者http://127.0.0.1:8000
,看到的应该是: