2011-06-10 65 views
0

我寫了以下幾個基於我發現的幾個不同的web.py示例,但我無法獲得登錄頁面發佈,任何想法爲什麼我的代碼是sooo foobar?Web.py窗體不張貼?

p.s此外,爲什麼我似乎必須將web.config.debug設置爲false,如果我想使用會話?

import web 
import db 
from web import form 


login = form.Form(
    form.Textbox('username'), 
    form.Password('password'), 
    form.Button('Login'),) 

urls = (
    '/', 'Index', 
    '/login', 'Login', 
    '/home', 'Home',) 

web.config.debug = False 
app = web.application(urls, globals()) 
session = web.session.Session(app, web.session.DiskStore('sessions')) 


class Login: 
    def GET(self): 
     f = login() 
     return render.register(f) 

    def POST(self): 
     f = web.input() 
     check = db.db_query('select * from users where username=? and password=?', (i.username, i.password)) 
     if check: 
      session.loggedin = True 
      session.username = i.username 
      raise web.seeother('/home') 
     else: return render.base("Those login details don't work.") 


class Index: 
    def GET(self): 
     return 'index' 

class Home: 
    def GET(self): 
     return 'home' 


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

「ps爲什麼我似乎必須將web.config.debug設置爲false,如果我想使用會話?」 - 因爲會話/ cookie頭必須在頁面內容之前發送,因此如果在發送會話/ cookie之前發送任何調試消息,它們將不起作用 – Andrea 2011-06-10 16:02:55

+0

錯誤可能出現在「註冊」模板中。你可以分享嗎? – 2011-06-15 01:33:47

回答

1

請點擊這裏(http://webpy.org/cookbook/forms)給出的例子,對我來說,似乎只是在做form.Form(...)實際上並沒有創建標籤,所以請檢查你的HTML輸出。
基本上它缺少<form name="main" method="post"> ... </form>包含您的要素(TextInput之按鈕)

1

你使用的是沒有定義的「i」變量...嘗試用「F」您web.input定義的()