0

我正在使用 python web.py 框架来创建一个小型 Web 应用程序,它刚刚

  1. 登录画面(认证)

  2. 显示记录列表的屏幕(成功登录后)

目前我正在尝试创建登录屏幕身份验证

我创建了一个index.py文件,代码如下

索引.py

import os
import sys
import web
from web import form
from web.contrib.auth import DBAuth

render = web.template.render('templates/')

urls = (
  '/',   'Login',
)

app = web.application(urls, globals())
db = web.database(dbn='mysql', db='Python_Web', user='root', pw='redhat')

class Login:

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

    def GET(self):
        form = self.login_form()
        return render.login(form)

    def POST(self):
#        if not self.login_form.validates():
#            return render.login(self.login_form)
        post = self.login_form()
        username = post['username'].value
        print username,">>>>>>>>>>>>>>>>>>>>>>username"
        password = post['password'].value
        ident = db.select('user', where='user_login=$username', vars=locals())

if __name__ == "__main__":
    web.internalerror = web.debugerror
    app.run()     

我的login.html代码

$def with (form)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Log in</title>
</head>
<body>
<div id="container">
  <h1>Log in Details</h1>
  <form action="" method="post" accept-charset="utf-8">
    <p><label for="username">Username:
    <input type="text" name="username" id="username" maxlength="254" tabindex="1" />
    </label></p>
    <p><label for="password">Password:
    <input type="password" name="password" id="password" maxlength="254" tabindex="2" />
    </label></p>
    <p><label for="Login"></label><button id="Login" name="Login">Login</button></p>  
  </form>

</div>
</body>

当我在浏览器中使用 url 运行上述文件时www.localhost:9080,我可以看到带有字段username, password and login按钮的屏幕,但是当我输入用户名和密码并单击login按钮并尝试打印用户名时,我无法从浏览器中获取任何数据,结果显示如下

None >>>>>>>>>>>>>>>>>>>>>>username
0.0 (1): SELECT * FROM user WHERE user_login=NULL

谁能告诉我为什么我无法获取通过浏览器输入的详细信息?,我是否遗漏了上述代码中的任何内容,最后我的意图是

通过签入数据库来创建login页面和用户详细信息validate

如果用户退出,redirect则到下一页

我请求帮助我编写从浏览器获取详细信息并检查数据库并在用户存在时重定向到另一个 html 页面的代码。为了完成这个过程,我真的很困惑

4

1 回答 1

0

确保在尝试访问任何输入之前验证表单

def POST(self):
    post = self.login_form()
    post.validates()
    username = post['username'].value
    print username,">>>>>>>>>>>>>>>>>>>>>>username"
    password = post['password'].value
    ident = db.select('user', where='user_login=$username', vars=locals())

之后更改代码对我有用。祝你好运!

于 2012-12-14T03:30:25.827 回答