2017-01-05 7 views
5
definiert ist

Ich habe diesen Python-Code, und irgendwie bekomme ich die Fehlermeldung:Nameerror: name ‚request‘ nicht

File "/app/identidock.py", line 13, in mainpage 
if request.method == 'POST': 
NameError: name 'request' is not defined 

Aber ich kann wirklich nicht meinen Fehler finden. Kann mir bitte jemand dabei helfen?

from flask import Flask, Response 
import requests 
import hashlib 

app = Flask(__name__) 
salt = "UNIQUE_SALT" 
default_name = 'test' 

@app.route('/', methods=['GET', 'POST']) 
def mainpage(): 

    name = default_name 
    if request.method == 'POST': 
     name = request.form['name'] 

    salted_name = salt + name 
    name_hash = hashlib.sha256(salted_name.encode()).hexdigest() 

    header = '<html><head><title>Identidock</title></head><body>' 
    body = '''<form method="POST"> 
       Hallo <input type="text" name="name" value="{0}"> 
       <input type="submit" value="Abschicken"> 
       </form> 
       <p> Du siehst aus wie ein: </p> 
      <img src="/monster/{1}"/> 
      '''.format(name, name_hash) 
    footer = '</body></html>' 

    return header + body + footer 

@app.route('/monster/<name>') 
def get_identicon(name): 

    r = requests.get('http://dnmonster:8080/monster/' \ 
     + name + '?size=80') 
    image = r.content 

    return Response(image, mimetype='image/png') 

if __name__ == '__main__': 
    app.run(debug=True, host='0.0.0.0') 
+0

wo denken Sie, 'request' definieren? – depperm

+0

@depperm: Nun, der Flaschendekorator führt eine Variable mit dem Namen 'request' ein. –

+0

@WillemVanOnsem: Nein, der 'Anfrage'-Kontext wird nicht von Dekoratoren eingeführt. Es handelt sich um ein spezielles globales Element, das bei jeder Verarbeitung einer Anforderung an den aktuellen Anforderungskontext gebunden ist. –

Antwort

4

Sie sind wahrscheinlich die folgende import Anweisung fehlt:

from flask import request 

, die im Header der Datei platziert werden soll.

+0

Das hatte -1 aber war richtig. +1 von mir. –

29

Sie haben offenbar vergessen, die flask.requestrequest context Objekt zu importieren:

from flask import request 
+0

Jesus, ich bin manchmal so dumm ... danke viel! Ich werde deine Antwort in 7 Minuten als korrekt akzeptieren :) – watchmerisxe

+0

Es wird immer noch nicht akzeptiert :). Das funktioniert übrigens. –

+0

Flasche newb hier (von Knoten). Vielen Dank! Habe eine Verbesserung – tenCupMaximum