【问题标题】:SyntaxError: invalid syntax but followed the WTF documentation and still doesn't accept itSyntaxError:无效的语法,但遵循 WTF 文档,但仍然不接受
【发布时间】:2020-04-15 14:47:20
【问题描述】:

学习python烧瓶和WTF。一直在根据文档和教程处理下面的代码,但似乎无法找到错误。

控制器.py

from flask import Flask, escape, request, render_template, url_for, flash, redirect, send_from_directory, json, jsonify

from flask_wtf import FlaskForm
from wtforms import (StringField, PasswordField, SubmitField, BooleanField, DateTimeField, 
                        RadioField, SelectField, TextField, TextAreaField, SubmitField)

from wtforms.validators import DataRequired, Length, Email, EqualTo
from form import infoForm


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

@app.route('/test', methods=['GET','POST'])
def test():
    breed = False 
    form = infoForm()
    if form.validate_on_submit():
        session['breed'] = form.breed.data
        session['neutered'] = form.neutered.data 
        session['mood'] = form.mood.data 
        session['food_option'] = form.food_option.data 
#       breed = form.breed.data
#       form.breed.data = ''
#   return render_template('test.html', form = form, breed = breed)
        return redirect(url_for('/'))
    return render_template('test.html', form = form) 

forms.py

class infoForm(FlaskForm):

    # Used by forms.py essentially  
    breed = StringField("What breed are you?", validators = [DataRequired()])
    neutered = BooleanField("Have you been neutered?"), choices = ['Yes'])
    mood = RadioField('Please choose your mood: '),choices = [('mood_one','Happy'), ('mood_2','Sad')]
    food_option = SelectField(u'Pick your fav food: '), choices = [('chic','Chicken') , ('bf','beef') , ('fish','fish')])   
    submit = SubmitField('Submit')

我在终端上得到的响应是:

Traceback (most recent call last):
  File "/Users/himanshu/Documents/MasterInt/HMSpython/controller.py", line 21, in <module>
    from form import infoForm
  File "/Users/himanshu/Documents/MasterInt/HMSpython/form.py", line 22
    food_option = SelectField(u'Pick your fav food: ', choices = [('chic','Chicken') , ('bf','beef') , ('fish','fish')])    
              ^

箭头在'chic',后面的-下方

想了解我在遵循文档时哪里出错了吗?

谢谢!

【问题讨论】:

  • 您的括号在inforform 中不平衡,这些选项属于函数调用中。

标签: python flask flask-wtforms wtforms


【解决方案1】:

您在无线电场和布尔场上的右括号')' 的位置错误。在选择之前关闭括号。也许这就是问题所在。 并在逗号之后放置一个空格,而不是之前。 你可以在下面看到我的意思。

class infoForm(FlaskForm):

    # Used by forms.py essentially  
    breed = StringField("What breed are you?", validators=[DataRequired()])
    neutered = BooleanField("Have you been neutered?", choices=['Yes'])
    mood = RadioField('Please choose your mood:', choices=[('mood_one', 'Happy'), ('mood_2', 'Sad')])
    food_option = SelectField(u'Pick your fav food:', choices=[('chic', 'Chicken'), ('bf', 'beef'), ('fish', 'fish')])   
    submit = SubmitField('Submit')

【讨论】:

  • Hey Engin 我复制了上面的文件,但仍然收到以下错误:Traceback (most recent call last): File "controller.py", line 21, in &lt;module&gt; from form import infoForm File "/Users/himanshu/Documents/MasterInt/HMSpython/form.py", line 23 food_option = SelectField(u'Pick your fav food:', choices = [('chic', 'Chicken'),('bf', 'beef'),('fish', 'fish')]) 我还遗漏了什么吗?
  • 情绪行末尾缺少另一个括号“)”。这可能是从一开始就有的问题。我在代码中添加了缺少的括号。可以复制一下再试试吗?
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
相关资源
最近更新 更多