我正在使用 FLASK + Ajax 来制作登录页面。如果用户名和密码正确,它应该重定向到另一个页面。
我做了一个表格。并且请求成功通过。我可以在 python ( flask ) 中捕获数据。但我的问题是在呈现页面后没有发生重定向。使用 render_template
这里是请求root url时重定向到登录页面
@app.route('/')
def OperationPage():
log_screenprint('User Has Requested / URL >> Redirect to /login')
return redirect(url_for('page_login'))
这是验证用户名和密码的功能。然后它应该重定向到下一页
@app.route('/login' , methods=["POST","GET"])
def page_login() :
log_screenprint('Got Request From GUI User to login With Cred.')
for key,value in securityFile.items() :
dbUser = securityFile[key]['username']
dbpass = securityFile[key]['defaultpass']
username = request.form.get('username')
password = request.form.get('password')
sessionId = request.form.get('session')
if dbUser == username :
if dbpass == password :
socketio.emit('userDb' , json.dumps(securityFile[key]) , session = sessionId)
return render_template('/index.html' , title= 'Home Page')
return render_template('/login.html')
这是我在 javascript 中使用的请求。
$('#login-form').submit(function (e) {
e.preventDefault();
var username = document.querySelector('.login-username').value
var password = document.querySelector('.login-password').value
$.ajax({
url: '/login',
data: {
username: username,
password: password,
session : (socket.id),
},
type: 'POST',
success: function (response) {
console.log('response');
},
error: function (error) {
console.log(error);
}
});
});
问题又来了。甚至正确的用户名和密码。 index.html 未呈现
答案 0 :(得分:0)
在使用 ajax 时,您负责如何处理服务器响应。服务器返回的响应是您需要向用户显示的 html 网页(index.html)。在您的情况下,您只是将“响应”一词打印到网页控制台:
success: function (response) {
console.log('response');
},
我建议以其他方式进行。我会创建另一条路线:
@app.route('/index')
def index():
return render_template('/index.html' , title= 'Home Page')
并在服务器响应成功时将用户重定向到它。
success: function (response) {
window.location.replace('index')
},
它还需要对认证功能进行一些更改,因为您的服务器每次都返回成功的 http 代码。您可以使用以下内容:
return "", 200
登录成功,以及
return "", 401
失败。