0

私はpython web.pyフレームワークを使用して、小さなWebアプリケーションを作成しています

  1. ログイン画面(認証)

  2. 記録一覧画面(ログイン成功後)

現在、ログイン画面認証を作成しようとしています

index.py以下のコードでファイルを作成しました

index.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>

ブラウザでURLwww.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 に答える