在重定向(url_for())后,烧瓶未重定向到新页面

时间:2018-02-15 17:31:43

标签: python redirect flask

我有一个简单的应用程序,需要在celery中运行subprocess.call,只需将一些文本返回到屏幕,因为它已成功提交。

尽我所能,我无法让重定向(url_for())做任何事情。我在日志中看到我在浏览器窗口中获得了302和200但没有新页面。

这是我的server.py代码的相关部分:

#!/usr/bin/python

import os
from flask import Flask, url_for, jsonify, request, make_response, render_template, json, flash, Markup, redirect
from celery import Celery, states
from flask_cors import CORS, cross_origin
import pandas as pd
import subprocess

app = Flask(__name__)
CORS(app)
app.secret_key = 'random string'
app.config['CELERY_BROKER_URL'] = 'amqp://cluster:cluster@localhost/myvhost'
app.config['CELERY_RESULT_BACKEND'] = 'amqp://cluster:cluster@localhost/myvhost'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)


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

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

@app.route('/PrevNext',methods=['GET','POST'])
def prevNext():
    _uid      = request.form['inputUid']
    _db   = request.form['inputName']
    _TableName = request.form['inputTableName']
    if  _id:
        uid = _uid
        if _db:
            db = _db
            if _TableName:
                TableName = _TableName
                flash("Running  images!")
                return redirect(url_for('main'))
                create_some_stuff.delay(uid,db,TableName)

create_some_stuff是一个运行良好的芹菜任务,但是我在重定向工作时遇到了麻烦。经过几个小时的玩弄,我希望你们中的一个可以帮忙吗?

控制台的输出是:

 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 270-380-963
192.168.200.238 - - [15/Feb/2018 16:55:07] "POST /PrevNext HTTP/1.1" 302 -
192.168.200.238 - - [15/Feb/2018 16:55:08] "GET / HTTP/1.1" 200 -

我错过了一些简单的东西吗?

由于

1 个答案:

答案 0 :(得分:0)

  

我在重定向工作时遇到了麻烦。

prevNext 中的条件表达式可能不会导致函数返回。尝试将 return 移至第一级,看看会发生什么。像这样:

@app.route('/PrevNext',methods=['GET','POST'])
def prevNext():
    _uid      = request.form['inputUid']
    _db   = request.form['inputName']
    _TableName = request.form['inputTableName']
    if  _id:
        uid = _uid
        if _db:
            db = _db
            if _TableName:
                TableName = _TableName
                flash("Running  images!")
                create_some_stuff.delay(uid,db,TableName)
    return redirect(url_for('main')) #moved