1. 程式人生 > >Python之實現簡單的註冊登入系統

Python之實現簡單的註冊登入系統

        表單在網頁中主要負責資料採集功能。一個表單有三個基本組成部分: 表單標籤:這裡麵包含了處理表單資料所用CGI程式的URL以及資料提交到伺服器的方法。 表單域:包含了文字框、密碼框、隱藏域、多行文字框、複選框、單選框、下拉選擇框和檔案上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和一般按鈕;用於將資料傳送到伺服器上的CGI指令碼或者取消輸入,還可以用表單按鈕來控制其他定義了處理指令碼的處理工作。而在HTML裡面,在位址列輸入一個URL然後開啟,這樣傳送的是一個get請求,若是要使用POST請求,就需要使用表單了。

        HTML中的表單就是由form的標籤來宣告的,舉個栗子:

<form action="login" method="post">
	<label>username:</label>
	<input type="text" name="username"><br />
	<label>password:</label>
	<input type="password" name="password"><br />
	<input type="submit" name="submit">
<form>
        上面程式碼中,由form標籤包含的部分便是表單的內容,其中關注其中的input部分,這個表單中有三個input,一個是text型別的,代表普通的文字輸入,一個是password型別的,代表密碼輸入,一個是submit型別的,是一個提交的按鈕;form標籤定義了兩個屬性,一個是action,代表這個表單提交的路徑,一個是method,代表這個表單提交的方法,預設為GET。接下來詳細說明一下上述例子的具體過程,當用戶點下submit的按鈕的時候,這時候瀏覽器就向action的路徑傳送了一個POST請求,請求的內容是下面這個樣子的
data = {
	'username':'XXXXXXXX',
	'password':'XXXXXXXX'
}

         就是將各個除了submit之外的input的name作為key值,實際填寫的資料作為value值作為資料包,傳送了一個POST請求,當然,如果吧method改為get的話,那麼傳送的就是GET請求了。接下來,伺服器所接收到的的請求資料就跟從客戶端程式那邊發過來的資料是一樣的了,接下來就是根據傳送過來的資料,做對應的處理然後返回了。

        有了上述知識之後,我們就開始做一個簡單的註冊登入系統。我們做的註冊登入系統是有註冊功能和登入功能,註冊後伺服器將註冊資訊儲存到本地,登入時驗證註冊訊息是否正確。web.py裡面有一些template裡面已經有了一些支援,具體程式碼如下:

# -*- coding: cp936 -*-
import web
import os

urls = (
    '/', 'hello',
    '/login', 'login',
    '/regist', 'regist'
)
app = web.application(urls, globals())
class hello:
    def __init__(self):
        self.render = web.template.render('templates/')
    def GET(self):
        return self.render.form()


class login:
    def POST(self):
        para = web.input()
        username = para['username']
        password = para['password']

        #TODO:...
        #if authenticate(username,password):
            #return render.hello(username)
        return 'hello world'

class regist:
    def GET(self):
        return 'hello world'
        #return self.render.form()
    def POST(self):
        para = web.input()
        username = para['username']
        password = para['password']

        #TODO:...
        return 'hello world'

if __name__ == '__main__':
    app.run() 

         執行效果如下挫圖:想要自己搞得美觀一點,可以自己找一些相關資料!這個實現的就是輸入密碼,返回值。你可以看到沒有本地儲存,是的,這就是給你在TODO那裡留的坑!然後密碼匹配什麼的把上面的login類那裡的註釋去掉即可!

       隨便輸入使用者名稱密碼可得:


參考文件:

              模擬一個登入系統:http://xcw31.diandian.com/post/2012-07-23/40039885092

             聚合資料api:           http://www.juhe.cn/

             使用新浪微博API:  http://open.weibo.com/ (呼叫微博api介面,實現微博傳送,讀取等功能)