beardeddev
beardeddev

Reputation: 11

Flask redirects on GAE

Hi I am using Flask (http://flask.pocoo.org/) on Google app engine. I have a following code

@app.route("/edit.html", methods=['GET', 'POST'])
def create():
if request.method == 'GET':
    form = ImageForm()  
    return render_template('edit.html', title=u'Add', form=form)

if request.method == 'POST':
    image = Image()        
    form = ImageForm(request.form, image)
    if form.validate() and request.files['image']:
        form.populate_obj(image)
        if request.files['image']:
            image.file = request.files['image'].read()
        image.put()
        return redirect(url_for("edit", id=image.key()))
    else:
        return render_template('edit.html', title=u'Add', form=form)

@app.route("/edit/<id>.html", methods=['GET', 'POST'])
def edit(id):
    image = Image.get(id) 
    form  = ImageForm(request.form, image)
    return render_template('edit.html', title=u'Edit', form=form)   

but browser doesn't redirect me to an a given url in

return redirect(url_for("edit", id=image.key()))

I get a message:

image Status: 302 FOUND Content-Type: text/html; charset=utf-8 Location: http://localhost:8080/edit/agtyb3VnaC1kcmFmdHILCxIFSW1hZ2UYDQw.html Content-Length: 299

Redirecting...

Redirecting...

You should be redirected automatically to target URL: /edit/agtyb3VnaC1kcmFmdHILCxIFSW1hZ2UYDQw.html. If not click the link.

I can't understand what's fault with my code?

Upvotes: 1

Views: 1962

Answers (1)

Nick Johnson
Nick Johnson

Reputation: 101149

Something in your code is outputting text to the response before the Flask framework outputs its response (it looks like whatever it is is printing 'image') - most likely you have a print statement somewhere in your code. As a result, the headers flask tries to output get interpreted as part of the body of the response instead.

Upvotes: 7

Related Questions