flask从html中页面重定向,如何使用Flask和jQuery进行重定向

我正在使用Flask作为后端,并使用jQuery作为我正在从事的个人项目。

要登录,我想这样做:

$.ajax({

type: "POST",

data: JSON.stringify(body), //username and password

contentType: 'application/json; charset=utf-8',

url: "/login",

success: successFunction,

error: errorFunction,

complete: completeFunction

});

在errorFuction中,我会告诉用户其用户名或密码不正确,等等。

在后端,我的/ login路由如下所示

@app.route("/login", methods=['GET', 'POST'])

def login():

if(request.method == "POST"):

#retrieve the username and password sent

data = request.json

if(data is None or not 'username' in data or not 'password' in data):

abort(400)

else:

count = User.query.filter(User.username == data['username']).count()

if(count == 0):

abort(404) #that user doesnt exist

else:

passIsCorrect = User.query.filter(User.username == data['username'],

User.password == data['password']).count()

if(passIsCorrect):

session['user'] = data['username']

return redirect(url_for('index'))

else:

abort(401)

else:

return render_template('login.html')

但是在客户端,浏览器不会重定向,如果我在完整功能中查看响应对象,我会看到通常从我的“ /”路由返回的内容:200 OK和index.html模板。

我的问题是:

有什么方法可以拦截客户端重定向?

我认为问题是因为jquery发起了请求而不是浏览器。

我解决此问题的第一个尝试是使用make_response并设置Location标头构造自己的响应,但这导致了相同的行为。我当前的解决方案是返回200,然后客户端执行window.location = "/"此操作,但这似乎很hack

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值