2017-07-04 4 views
0

hier nicht definiert ist wird der Kolben Code:Während Web-Formulare in Flask zu schaffen, erhalte ich die Fehlermeldung: jinja2.exceptions.UndefinedError: 'reviewform'

from flask import Flask, render_template 
from wtforms import Form, TextAreaField 


app = Flask(__name__) 
app.config['SECRET_KEY'] = 'mysecretkey' 


class ReviewForm(Form): 
    reviewText = TextAreaField() 


@app.route('/', methods=['GET', 'POST']) 
def index(): 
    reviewform = ReviewForm() 
    return render_template("review.html", form=reviewform) 


if __name__ == '__main__': 
    app.run(debug=True) 

Hier wird die Formularvorlage Jinja2 mit:

<!doctype html> 
<html> 
<head> 
    <title>Review Page</title> 
</head> 
    <body> 
    <h1>Enter your review</h1> 
<form method="POST" action="{{ url_for('index') }}"> 
     {{ reviewform.csrf_token }} 
     {{ reviewform.reviewText }} 
</form> 
    </body> 
</html> 

Es scheint, dass das Objekt ordnungsgemäß definiert und an render_template() übergeben wurde. Ich kann den Fehler nicht verstehen. Kann mir bitte jemand helfen?

Hier ist die Rückverfolgung:

Traceback (jüngste Aufforderung zuletzt):

Datei „C: \ Users \ Default \ AppData \ Local \ Continuum \ Anaconda3 \ lib \ site-packages \ Kolben \ app.py ", Zeile 1994, in Anruf zurückgeben self.wsgi_app (environ, start_response) Datei" C: \ Benutzer \ Standard \ AppData \ Lokal \ Continuum \ Anaconda3 \ lib \ site-packages \ flask \ app. py ", Linie 1985, in wsgi_app response = self.handle_exception (e) Datei" C: \ Benutzer \ Standard \ AppData \ Local \ Kontinuum \ Anaconda3 \ lib \ site-packages \ flask \ a pp.py ", Zeile 1540, in handle_exception reraise (exc_type, exc_value, tb) Datei" C: \ Benutzer \ Standard \ AppData \ Lokal \ Continuum \ Anaconda3 \ lib \ site-packages \ flask_compat.py ", Zeile 33 , in Reraise Wert erhöhen Datei "C: \ Benutzer \ Standard \ AppData \ Lokale \ Kontinuum \ Anaconda3 \ lib \ Site-Pakete \ Kolben \ app.py", Zeile 1982, in Wsgi_app Antwort = self.full_dispatch_request() Datei "C: \ Benutzer \ Standard \ AppData \ Lokale \ Kontinuum \ Anaconda3 \ lib \ Site-Pakete \ Kolben \ app.py", Zeile 1614, in full_dispatch_request rv = self.handle_user_exception (e) Datei "C: \ Benutzer \ Standard \ AppData \ Lokales \ Kontinuum \ Anaconda3 \ lib \ Site-Pakete \ Kolben \ app.py ", Zeile 1517, in handle_user_exception reraise (exc_type, exc_value, tb) Datei "C: \ Benutzer \ Standard \ AppData \ Lokal \ Continuum \ Anaconda3 \ lib \ site-packages \ flask_compat.py", Zeile 33, in Reraise Wert erhöhen Datei "C: \ Benutzer \ Default \ AppData \ Local \ Continuum \ Anaconda3 \ lib \ site-packages \ flash \ app.py ", Zeile 1612, in full_dispatch_request rv = self.dispatch_request() Datei" C: \ Benutzer \ Standard \ AppData \ Local \ Continuum \ Anaconda3 \ lib \ site "packages \ flask \ app.py", Zeile 1598, in dispatch_request zurücksenden self.view_functionsrule.endpoint Datei "C: \ Benutzer \ Jimmy Valentine \ PycharmProjects \ SentimentAnalysis \ SentimentAnalysis.py", Zeile 16, im Index return render_template ("review.html", form = reviewform) Datei "C: \ Benutzer \ Standard \ AppData \ Lokal \ Continuum \ Anaconda3 \ lib \ Site-Pakete \ Kolben \ Templating.py", Zeile 134, in render_template context, ctx.app) Datei "C: \ Benutzer \ Standard \ AppData \ Lokal \ Continuum \ Anaconda3 \ lib \ site-packages \ flash \ templating.py", Zeile 116, in _render rv = template.render (Kontext) Datei "C: \ Benutzer \ Standard \ AppData \ Lokale \ Continuum \ Anaconda3 \ lib \ site-packages \ jinja2 \ asyncsupport.py", Zeile 76, in render return original_render (selbst, * args, ** kwargs) Datei "C: \ Benutzer \ Standard \ AppData \ Lokale \ Kontinuum \ Anaconda3 \ lib \ Site-Pakete \ Jinja2 \ environment.py", Zeile 1008, in Render zurückgeben Self.environment.handle_exception (exc_info, True) Datei "C: \ Benutzer \ Standard \ AppData \ Lokal \ Kontinuum \ Anaconda3 \ lib \ Site-Pakete \ Jinja2 \ environment.py", Zeile 780, in handle_exception reraise (exc_type, exc_value, tb) Datei "C: \ Benutzer \ Standard \ AppData \ Lokal \ Kontinuum \ Anaconda3 \ lib \ Site-Pakete \ jinja2_compat.py ", Zeile 37, in Reraise Raise value.with_traceback (tb) Datei" C: \ Benutzer \ Jimmy Valentine \ PycharmProjects \ SentimentAnalysis \ templates \ review.html ", Zeile 10, im Template-Code der obersten Ebene {{ reviewform.reviewText}} Datei "C: \ Benutzer \ Standard \ AppData \ Lokal \ Continuum \ Anaconda3 \ lib \ Site-Pakete \ Jinja2 \ environment.py", Zeile 430, in getattr return getattr (Objekt, Attribut)

jinja2.exceptions.UndefinedError: ‚reviewform‘ ist nicht definiert

Antwort

1

Du render_template mit form=reviewform Aufruf, was bedeutet, reviewform in der Vorlage unter dem Namen zugänglich sein wird form. Um das Problem zu beheben, können Sie entweder :

  • Änderung der Anruf an render_template,

    return render_template("review.html", reviewform=reviewform) 
    
  • oder ändern Sie Ihre Vorlage form statt reviewform zu verwenden.

    <form method="POST" action="{{ url_for('index') }}"> 
        {{ form.csrf_token }} 
        {{ form.reviewText }} 
    </form> 
    
+0

Dank @Bovarysme. Dies ist das grundlegende Argument, das übergeben wird. Herr, ich schäme mich für mich. :) –

Verwandte Themen