Flask Value error view-functie heeft geen antwoord geretourneerd

Foutbericht:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1478, in full_dispatch_request
    response = self.make_response(rv)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1566, in make_response
    raise ValueError('View function did not return a response')
ValueError: View function did not return a response

En mijn code:

#Used for starting the flask server
from flask import Flask #Import flask mains
from flask import request #Import flask requests
from flask import render_template #Import flask render templates
import json, urllib #import api modules
import time #Imporing time in darlek voice
app = Flask(__name__)
@app.route('/')
def my_form():
    return render_template("my-form.html") #Set render template
@app.route('/', methods=['POST'])
def my_form_post():
    openwindow_at = float(request.form['open']) #When it reached ? open window
    if request.form['scale'] == "kelvin": #Change figures
        print("Do nothing") #Debug info
    elif request.form['scale'] == "celcius":
        openwindow_at = openwindow_at + int(273.15) #celcius to kelvin
    elif request.form['scale'] == "fah": #Fah to kelvin
        openwindow_at = (openwindow_at + 459.67) * 5 / 9  #F to kelvin
    text = request.form['text'] #Get info from First page
    url = "http://api.openweathermap.org/data/2.5/weather?q=" + text #Download the json
    response = urllib.urlopen(url) #Download Json
    data = json.loads(response.read()) #Parse json
    print("Current Weather in " + text + " " + data['weather'][0]['description']) #Debug infomation
    print("Temp: " + str(data['main']['temp'])) #Print temp 
    if data['weather'][0]['description'].find("rain") >= 0: #Check The weather
        print("Test")
        return "Shutting your window"
        Close the window(Tom's job)
    if float(data['main']['temp']) >= openwindow_at:
        return "Opening your window"
        #open the window (Tom's job)
if __name__ == '__main__':
    app.debug = True #Uncomment to enable debugging
    app.run() #Run the Server

en my-form.htmlis:

<!DOCTYPE html>
<html lang="en">
<body>
    <h1>Enter a place</h1>
    <form action="." method="POST">
        <input type="text" name="text">
        <input type="submit" name="my-form" value="Send">
    <h1>Options</h1>
    <p>Open window if temp is greater than<input type="textbox" name="open"></input> <input type="radio" name="scale" value="kelvin">Kelvin</input><input type="radio" name="scale" value="celcius">Celcius</input><input type="radio" name="scale" value="fah">FarenHeit</input></p>
    </form>
</body>
</html>

Als ik daar een while-lus plaats, wordt deze voor altijd geladen.

Voer vervolgens een temp in die hoger is dan de huidige die de pagina voor altijd laadt.
En als ik de huidige code hierboven vermeld, krijg ik de fout.


Antwoord 1, autoriteit 100%

Het volgende geeft geen antwoord:

Je moet iets teruggeven zoals return afunction()of return 'a string'.

Dit kan het probleem oplossen


Antwoord 2, autoriteit 51%

U retourneert geen antwoordobject vanuit uw weergave my_form_post. De functie eindigt met impliciete return None, wat Flask niet leuk vindt.

Maak de functie my_form_posteen expliciete reactie, bijvoorbeeld

return 'OK'

aan het einde van de functie.

Other episodes