来自ajaxtowards flask的发布请求后页面未呈现
Posted
技术标签:
【中文标题】来自ajaxtowards flask的发布请求后页面未呈现【英文标题】:page is not rendering after post request from ajaxtowards flask 【发布时间】:2021-09-26 04:26:23 【问题描述】:我正在使用 FLASK + Ajax 制作登录页面。如果用户名和密码正确,它应该重定向到另一个页面。
我做了一个表格。并且请求成功通过。我可以在 python ( flask ) 中捕获数据。但我的问题是渲染页面后没有发生重定向。使用渲染模板
这里是在请求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 没有呈现
【问题讨论】:
您应该将标签从 java 更改为 javascript 【参考方案1】:在使用 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')
,
它还需要对auhtentication 功能进行一些更改,因为您的服务器每次都返回成功的http 代码。你可以使用类似的东西:
return "", 200
成功登录,并且
return "", 401
失败。
【讨论】:
以上是关于来自ajaxtowards flask的发布请求后页面未呈现的主要内容,如果未能解决你的问题,请参考以下文章
无法使用来自axios请求的request.form在flask api中获取请求正文[重复]
来自 HTML 表单的 Flask 请求返回无值,我该怎么办?
Flask 和 Werkzeug:使用自定义标头测试发布请求