0

少しajaxを使ってログインフォームを作ろうとしています。ユーザーが間違ったパスワードとユーザー名の組み合わせを入力すると、エラー メッセージが sijax でページに追加されます。

これらは私の2つの方法です:
1) Sijax法

@staticmethod
def login(obj_response, uname, password):
    # Verify the user.
    username = uname.strip()
    password = password.strip()
    user = User.query.filter_by(username = username).first()

    if user is None:
        error = 'Invalid username/password combination'
    elif password != user.password:
        error = 'Invalid username/password combination'

    # Log the user in if the info is correct.
    else:
        login_user(user)
        session['logged_in'] = True 
        obj_response.redirect(url_for('user_home'))

    # Clear the previous error message.
    obj_response.script("$('#errormessage').remove();")

    # Add an error message to the html if there is an error.
    obj_response.html_append(".loginform", "<h4 id='errormessage'>" + error + "</h4>") 

2) Python メソッド:

@app.route('/login', methods=['GET', 'POST'])
def login():
if g.sijax.is_sijax_request:
    # The request looks like a valid Sijax request
    # Let's register the handlers and tell Sijax to process it
    g.sijax.register_object(SijaxHandler)
    return g.sijax.process_request()

return render_template('login.html')

私が知りたいのは、ユーザー名とパスワードの組み合わせが正しいかどうかを確認することです.ajaxを使用してエラーメッセージを表示しない場合は、ユーザーを自分のホームページにリダイレクトします(url_for('userhome'))。

sijax メソッド: obj_response.redirect(url_for('user_home')) で試してみましたが、これは機能しません。

何か案は?

このエラーが発生します: obj_response.html_append(".loginform", "" + error + "") UnboundLocalError: 割り当て前に参照されるローカル変数 'エラー'

4

1 に答える 1

0

問題は、常に使用するerrorが、エラーの場合にのみ定義することです。

簡単な解決策:行error = Noneの直前に追加しif user is None:ます。それに加えて、エラーが発生した場合にのみエラー メッセージ要素を作成します。

if error:
    obj_response.html_append(".loginform", "<h4 id='errormessage'>" + error + "</h4>") 
于 2012-12-23T13:35:30.790 に答える