UnboundLocalError: local variable 'photo' referenced before assignment
UnboundLocalError: local variable 'photo' referenced before assignment
每次我 post 新的 post 没有图像时我都会得到那个错误。如何才能让我只能 post 文本 or/and 带图像的文本。提前致谢!
我的Post表格
class PostForm(FlaskForm):
title = StringField('Title', validators=[DataRequired()])
content = TextAreaField('Content', validators=[DataRequired()])
photo = FileField('Image to post', validators=[FileAllowed(['jpg', 'png'])])
submit = SubmitField('POST')
我的路线
@app.route('/post/new', methods=['GET', 'POST'])
def new_post():
form = PostForm()
if form.validate_on_submit():
if form.photo.data:
photo = save_photo(form.photo.data)
post = Post(title=form.title.data, content=form.content.data, image=photo ,author=current_user)
db.session.add(post)
db.session.commit()
......
当我点击 POST 按钮时从服务器收到错误
post = Post(标题=form.title.data, 内容=form.content.data, 图片=照片,作者=current_user)
UnboundLocalError:赋值前引用的局部变量'photo'
变量 photo
是有条件分配的,所以如果 form.photo.data
是假的,那么变量 photo
将不存在,但尝试使用它的行仍将被执行。
您可能应该将使用变量的代码移动到同一个 if
块中。
问题是您的变量 photo
是在 if
块内定义的,如果您的 if
条件是 False
,它将不会被定义.
请尝试:
photo = None # put here any default value
if form.photo.data:
photo = save_photo(form.photo.data)
post = Post(title=form.title.data, content=form.content.data, image=photo ,author=current_user)
语句 if form.photo.data
不为真,因此变量 photo
未初始化。你必须在那之后添加一个 else
语句来初始化 photo
变量或者只是中断循环。
每次我 post 新的 post 没有图像时我都会得到那个错误。如何才能让我只能 post 文本 or/and 带图像的文本。提前致谢!
我的Post表格
class PostForm(FlaskForm):
title = StringField('Title', validators=[DataRequired()])
content = TextAreaField('Content', validators=[DataRequired()])
photo = FileField('Image to post', validators=[FileAllowed(['jpg', 'png'])])
submit = SubmitField('POST')
我的路线
@app.route('/post/new', methods=['GET', 'POST'])
def new_post():
form = PostForm()
if form.validate_on_submit():
if form.photo.data:
photo = save_photo(form.photo.data)
post = Post(title=form.title.data, content=form.content.data, image=photo ,author=current_user)
db.session.add(post)
db.session.commit()
......
当我点击 POST 按钮时从服务器收到错误 post = Post(标题=form.title.data, 内容=form.content.data, 图片=照片,作者=current_user) UnboundLocalError:赋值前引用的局部变量'photo'
变量 photo
是有条件分配的,所以如果 form.photo.data
是假的,那么变量 photo
将不存在,但尝试使用它的行仍将被执行。
您可能应该将使用变量的代码移动到同一个 if
块中。
问题是您的变量 photo
是在 if
块内定义的,如果您的 if
条件是 False
,它将不会被定义.
请尝试:
photo = None # put here any default value
if form.photo.data:
photo = save_photo(form.photo.data)
post = Post(title=form.title.data, content=form.content.data, image=photo ,author=current_user)
语句 if form.photo.data
不为真,因此变量 photo
未初始化。你必须在那之后添加一个 else
语句来初始化 photo
变量或者只是中断循环。