W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
既然擺好了一個(gè)網(wǎng)站的架勢(shì),下面就可以向里面填內(nèi)容。
要做的網(wǎng)站,有數(shù)據(jù)庫(kù)支持,雖然這不是必須的,但是如果做一個(gè)功能強(qiáng)悍的網(wǎng)站,數(shù)據(jù)庫(kù)就是必須的了。
接下來(lái)的網(wǎng)站,我暫且采用mysql數(shù)據(jù)庫(kù)。
怎么連接mysql數(shù)據(jù)呢?其方法跟《mysql數(shù)據(jù)庫(kù)(1)》中的方法完全一致。為了簡(jiǎn)單,我也不新建數(shù)據(jù)庫(kù)了,就利用已經(jīng)有的那個(gè)數(shù)據(jù)庫(kù)。
在上一節(jié)中已經(jīng)建立的文件夾methods中建立一個(gè)文件db.py,并且參考《mysql數(shù)據(jù)庫(kù)(1)》和《mysql數(shù)據(jù)庫(kù)(2)》的內(nèi)容,分別建立起連接對(duì)象和游標(biāo)對(duì)象。代碼如下:
#!/usr/bin/env python
# coding=utf-8
import MySQLdb
conn = MySQLdb.connect(host="localhost", user="root", passwd="123123", db="qiwsirtest", port=3306, charset="utf8") #連接對(duì)象
cur = conn.cursor() #游標(biāo)對(duì)象
很多網(wǎng)站上都看到用戶登錄功能,這里做一個(gè)簡(jiǎn)單的登錄,其功能描述為:
當(dāng)用戶輸入網(wǎng)址,呈現(xiàn)在眼前的是一個(gè)登錄界面。在用戶名和密碼兩個(gè)輸入框中分別輸入了正確的用戶名和密碼之后,點(diǎn)擊確定按鈕,登錄網(wǎng)站,顯示對(duì)該用戶的歡迎信息。
用圖示來(lái)說(shuō)明,首先呈現(xiàn)下圖:
用戶點(diǎn)擊“登錄”按鈕,經(jīng)過(guò)驗(yàn)證是合法用戶之后,就呈現(xiàn)這樣的界面:
這里用的static_url是一個(gè)函數(shù),它是tornado模板提供的一個(gè)函數(shù)。用這個(gè)函數(shù),能夠制定靜態(tài)文件。之所以用它,而不是用上面的那種直接調(diào)用的方法,主要原因是如果某一天,將靜態(tài)文件目錄statics修改了,也就是不指定statics為靜態(tài)文件目錄了,定義別的目錄為靜態(tài)文件目錄。只需要在定義靜態(tài)文件目錄那里修改(定義靜態(tài)文件目錄的方法請(qǐng)參看上一節(jié)),而其它地方的代碼不需要修改。 先寫一個(gè)測(cè)試性質(zhì)的東西。 用編輯器打開statics/js/script.js文件,如果沒有就新建。輸入的代碼如下: 由于本教程不是專門講授javascript或者jquery,所以,在js代碼部分,只能一帶而過(guò),不詳細(xì)解釋。 上面的代碼主要實(shí)現(xiàn)獲取表單中id值分別為username和password所輸入的值,alert函數(shù)的功能是把值以彈出菜單的方式顯示出來(lái)。 是否還記得在上一節(jié)中,在url.py文件中,做了這樣的設(shè)置: 現(xiàn)在就去把假設(shè)有了的那個(gè)文件建立起來(lái),即在handlers里面建立index.py文件,并寫入如下代碼: 當(dāng)訪問根目錄的時(shí)候(不論輸入 上面的文件保存之后,回到handlers目錄中。因?yàn)檫@里面的文件要在別處被當(dāng)做模塊引用,所以,需要在這里建立一個(gè)空文件,命名為 至此,一個(gè)帶有表單的tornado網(wǎng)站就建立起來(lái)了。讀者可以回到上一級(jí)目錄中,找到server.py文件,運(yùn)行它: 如果讀者在前面的學(xué)習(xí)中,跟我的操作完全一致,就會(huì)在shell中看到上面的結(jié)果。 打開瀏覽器,輸入
編寫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 #假設(shè)已經(jīng)有了
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
,或者網(wǎng)站域名),就將相應(yīng)的請(qǐng)求交給了handlers目錄中的index.py文件中的IndexHandler類的get()方法來(lái)處理,它的處理結(jié)果是呈現(xiàn)index.html模板內(nèi)容。render()
函數(shù)的功能在于向請(qǐng)求者反饋網(wǎng)頁(yè)模板,并且可以向模板中傳遞數(shù)值。關(guān)于傳遞數(shù)值的內(nèi)容,在后面介紹。__init__.py
。這個(gè)文件非常重要。在編寫模塊一節(jié)中,介紹了引用模塊的方法。但是,那些方法有一個(gè)弊端,就是如果某個(gè)目錄中有多個(gè)文件,就顯得麻煩了。其實(shí)python已經(jīng)想到這點(diǎn)了,于是就提供了__init__.py
文件,只要在該目錄中加入了這個(gè)文件,該目錄中的其它.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
,看到的應(yīng)該是:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: