gpt4 book ai didi

jquery - Flask 在 POST 后没有重定向?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:55 25 4
gpt4 key购买 nike

我已经盯着这个和谷歌搜索东西几个小时了,我需要另一双眼睛。我正在学习 Python 和 Flask。

我的问题:Flask 在返回的重定向()之后没有明显更改页面,但它正在“工作”:打印的消息“成功重定向到主页”。和“用户有一个有效的 session 。”登录后输出到控制台。此外,直接导航到“/home”可以按预期工作。我正在使用 jQuery 将数据 POST 到 Flask。

from flask import Flask, request, redirect, jsonify, render_template, session

from google.oauth2 import id_token
from google.auth.transport import requests

import sys, collections

import db

app = Flask(__name__)
app.secret_key = 'some-key'

db.connect('users.sqlite')

@app.route('/')
def index():
return render_template('index.html')

@app.route('/collect', methods=['POST'])
def collect():
if request.method == 'POST':
google_credential_package = {}
google_credential_package['google_credential'] = request.json['google_credential']
google_credential_package['verified'] = request.json['verified']

try:
idinfo = id_token.verify_oauth2_token(google_credential_package['google_credential'], requests.Request(), 'my-client-id')
if idinfo['iss'] not in ['accounts.google.com', 'https://accounts.google.com']:
raise ValueError('Wrong issuer.')
if idinfo['aud'] == 'my-client-id':
userid = idinfo['sub']
email = idinfo['email']
name = idinfo['name']
pfp = idinfo['picture']
user_type = 'normie'

retrieved_user = db.user('users.sqlite', userid, email, name, pfp, user_type)

if retrieved_user[3] == 'alpha':
print('User ' + name + ' is an Alpha Tester.')
session['user'] = 'yes'
return redirect('/home') # THE URL DOES NOT CHANGE HERE. (REDIRECT DOES NOT VISUALLY CHANGE ANYTHING.)
else:
return 'Success.'
except ValueError:
print('Invalid token!')
pass

@app.route('/home')
def generateHome():
print('Successfully redirected to the homepage.')
if session.get('user'):
print('User has a valid session.')
return render_template('home.html') # THIS DOES NOT HAPPEN VISIBLY.
else:
print('User does not have a valid session.')
return render_template('error.html', error = 'This page is only available to Alpha users.')

编辑:没有输出错误消息。模板“home.html”存储在templates中。

最佳答案

选项一

只需使用普通表单发布(即 form.submit(),或者只是有一个不拦截的提交按钮)发布您的表单,并允许后端重定向您到达目的地

选项二

成功后在 javascript (document.location.href=new_url) 中进行重定向...

我还建议更好地了解客户端与服务器端的工作原理以及它们如何交互

关于jquery - Flask 在 POST 后没有重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com