用tornado做網(wǎng)站(2)

2018-02-24 15:48 更新

既然擺好了一個網(wǎng)站的架勢,下面就可以向里面填內(nèi)容。

連接數(shù)據(jù)庫

要做的網(wǎng)站,有數(shù)據(jù)庫支持,雖然這不是必須的,但是如果做一個功能強悍的網(wǎng)站,數(shù)據(jù)庫就是必須的了。

接下來的網(wǎng)站,我暫且采用mysql數(shù)據(jù)庫。

怎么連接mysql數(shù)據(jù)呢?其方法跟《mysql數(shù)據(jù)庫(1)》中的方法完全一致。為了簡單,我也不新建數(shù)據(jù)庫了,就利用已經(jīng)有的那個數(shù)據(jù)庫。

在上一節(jié)中已經(jīng)建立的文件夾methods中建立一個文件db.py,并且參考《mysql數(shù)據(jù)庫(1)》《mysql數(shù)據(jù)庫(2)》的內(nèi)容,分別建立起連接對象和游標對象。代碼如下:

#!/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()    #游標對象

用戶登錄

前端

很多網(wǎng)站上都看到用戶登錄功能,這里做一個簡單的登錄,其功能描述為:

當用戶輸入網(wǎng)址,呈現(xiàn)在眼前的是一個登錄界面。在用戶名和密碼兩個輸入框中分別輸入了正確的用戶名和密碼之后,點擊確定按鈕,登錄網(wǎng)站,顯示對該用戶的歡迎信息。

用圖示來說明,首先呈現(xiàn)下圖:

用戶點擊“登錄”按鈕,經(jīng)過驗證是合法用戶之后,就呈現(xiàn)這樣的界面:

這里用的static_url是一個函數(shù),它是tornado模板提供的一個函數(shù)。用這個函數(shù),能夠制定靜態(tài)文件。之所以用它,而不是用上面的那種直接調(diào)用的方法,主要原因是如果某一天,將靜態(tài)文件目錄statics修改了,也就是不指定statics為靜態(tài)文件目錄了,定義別的目錄為靜態(tài)文件目錄。只需要在定義靜態(tài)文件目錄那里修改(定義靜態(tài)文件目錄的方法請參看上一節(jié)),而其它地方的代碼不需要修改。

編寫js

先寫一個測試性質(zhì)的東西。

用編輯器打開statics/js/script.js文件,如果沒有就新建。輸入的代碼如下:

$(document).ready(function(){
    alert("good");
    $("#login").click(function(){
        var user = $("#username").val();
        var pwd = $("#password").val();
        alert("username: "+user);
    });
});

由于本教程不是專門講授javascript或者jquery,所以,在js代碼部分,只能一帶而過,不詳細解釋。

上面的代碼主要實現(xiàn)獲取表單中id值分別為username和password所輸入的值,alert函數(shù)的功能是把值以彈出菜單的方式顯示出來。

hanlers里面的程序

是否還記得在上一節(jié)中,在url.py文件中,做了這樣的設(shè)置:

from handlers.index import IndexHandler    #假設(shè)已經(jīng)有了

url = [
    (r'/', IndexHandler),
]

現(xiàn)在就去把假設(shè)有了的那個文件建立起來,即在handlers里面建立index.py文件,并寫入如下代碼:

#!/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,或者網(wǎng)站域名),就將相應的請求交給了handlers目錄中的index.py文件中的IndexHandler類的get()方法來處理,它的處理結(jié)果是呈現(xiàn)index.html模板內(nèi)容。

render()函數(shù)的功能在于向請求者反饋網(wǎng)頁模板,并且可以向模板中傳遞數(shù)值。關(guān)于傳遞數(shù)值的內(nèi)容,在后面介紹。

上面的文件保存之后,回到handlers目錄中。因為這里面的文件要在別處被當做模塊引用,所以,需要在這里建立一個空文件,命名為__init__.py。這個文件非常重要。在編寫模塊一節(jié)中,介紹了引用模塊的方法。但是,那些方法有一個弊端,就是如果某個目錄中有多個文件,就顯得麻煩了。其實python已經(jīng)想到這點了,于是就提供了__init__.py文件,只要在該目錄中加入了這個文件,該目錄中的其它.py文件就可以作為模塊被python引入了。

至此,一個帶有表單的tornado網(wǎng)站就建立起來了。讀者可以回到上一級目錄中,找到server.py文件,運行它:

$ python server.py
Development server is running at http://127.0.0.1:8000
Quit the server with Control-C

如果讀者在前面的學習中,跟我的操作完全一致,就會在shell中看到上面的結(jié)果。

打開瀏覽器,輸入http://localhost:8000或者http://127.0.0.1:8000,看到的應該是:

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號