我正在尝试使用一个小的ajax创建一个登录表单。当用户填写错误的密码/用户名组合时,错误消息将添加到具有sijax的页面中:
这是我的两种方法:
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:赋值前引用的局部变量'error'
答案 0 :(得分:0)
问题是你总是使用error
,但只有在出现错误时才定义它。
简单解决方案:在error = None
行之前添加if user is None:
。除此之外,只有在出现错误时才创建错误消息元素:
if error:
obj_response.html_append(".loginform", "<h4 id='errormessage'>" + error + "</h4>")