午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python - 求助,ValueError: View function did not return a response

瀏覽:259日期:2022-09-09 15:13:01

問(wèn)題描述

新手在學(xué)flask開發(fā),看到《python web開發(fā)》第十章的用戶資料,在搞 管理員級(jí)別的資料編輯器 那里出問(wèn)題了,視圖函數(shù)拋出異常,不能返回響應(yīng)百度,谷歌,sof無(wú)果。找好久了沒解決,心塞所以來(lái)尋求幫助,謝謝能提供幫助的人這是整個(gè)文件夾http://pan.baidu.com/s/1kV4sXcr

python - 求助,ValueError: View function did not return a responsepython - 求助,ValueError: View function did not return a responsepython - 求助,ValueError: View function did not return a response

路由視圖views.py:

@main.route(’/edit-profile/<int:id>’, methods=[’GET’, ’POST’])@login_required@admin_requireddef edit_profile_admin(id): user = User.query.get_or_404(id) form = EditProfileAdminForm(user=user) if form.validate_on_submit():user.email = form.email.datauser.username = form.username.datauser.confirmed = form.confirmed.datauser.role = Role.query.get(form.role.data)user.name = form.name.datauser.location = form.location.datauser.about_me = form.about_me.datadb.session.add(user)flash(’The profile has been updated.’)return redirect(url_for(’.user’, username=user.username)) form.email.data = user.email form.username.data = user.username form.confirmed.data = user.confirmed form.role.data = user.role_id form.name.data = user.name form.location.data = user.location form.about_me.data = user.about_me return render_template(’edit_profile.html’, form=form, user=user)表單forms.py:

class EditProfileAdminForm(FlaskForm): email = StringField(’Email’, validators=[Required(), Length(1, 64),Email()]) username = StringField(’Username’, validators=[Required(), Length(1, 64), Regexp(’^[A-Za-z][A-Za-z0-9_.]*$’, 0, ’Username must have only letters,’ ’number, dots or underscores’)]) confirmed = BooleanField(’Confirmed’) role = SelectField(’Role’, coerce=int) name = StringField(’Real name’, validators=[Length(0, 64)]) location = StringField(’Location’, validators=[Length(0, 64)]) about_me = TextAreaField(’About me’) submit = SubmitField(’Submit’)def __init__(self, user, *args, **kwargs):super(EditProfileAdminForm, self).__init__(*args, **kwargs)self.role.choices = [(role.id, role.name) for role in Role.query.order_by(Role.name).all()]self.user = user def validate_email(self, field):if field.data != self.user.email and User.query.filter_by(email=field.date).first(): raise ValidationError(’Emai already registered.’)def validate_username(self, field):if field.data !=self.user.username and User.query.filter_by(username=field.data).first(): raise ValidationError(’Username already in use.’)模板e(cuò)dit_profile.html:

{% extends 'base.html' %}{% import 'bootstrap/wtf.html' as wtf %}{% block title %}Flasky - Edit Profile{% endblock %}{% block page_content %}<p class='page-header'> <h1>Edit Your Profile</h1></p><p class='col-md-4'> {{ wtf.quick_form(form) }}</p>{% endblock %}

問(wèn)題解答

回答1:

網(wǎng)友幫助找到問(wèn)題了,檢查用戶權(quán)限的自定義裝飾器出問(wèn)題了 decorators.py :

def permission_required(permission): def decorator(f):@wraps(f)def decorated_function(*args, **kwargs): if not current_user.can(permission):abort(403)return f(*args, **kwargs) # 此行縮進(jìn)錯(cuò)誤,應(yīng)在if語(yǔ)句外return decorated_function return decorator

修改過(guò)來(lái)就可以了。

T.T ,真是自己粗心大意。 python 代碼縮進(jìn)問(wèn)題,我特意去查了,網(wǎng)友都建議縮進(jìn)用 4 個(gè)空格,用 1 個(gè) tab 鍵代替風(fēng)險(xiǎn)太大,因?yàn)楦骷业木庉嬈鲗?duì) tab 鍵定義存在差異,很容易出問(wèn)題。雖然說(shuō)我這問(wèn)題不是出在 tab 鍵上,之后我還是會(huì)注意這個(gè)問(wèn)題的。

不過(guò)我還有一問(wèn)題,為什么錯(cuò)誤頁(yè)面拋出的是 視圖函數(shù) View function 的問(wèn)題, 而不會(huì)拋出裝飾器那邊的錯(cuò)誤,例如( IndentationError ): @admin_required → def permission_required(permission) 謝謝

標(biāo)簽: Python 編程
主站蜘蛛池模板: 久久超碰av| 人人射人人 | av免费大片 | 中文字幕一区二区三区在线观看 | 99涩涩| 午夜久久久久久久久久影院 | 国产操女人| 九九热精品视频在线 | 在线毛片观看 | 国产影视一区 | 亚洲成人婷婷 | www亚洲 | 日韩在线三区 | 成人免费在线播放 | 国产亚洲不卡 | 夜夜骚av| 亚洲天堂成人在线 | 福利资源在线 | 欧美日a| 国产第一福利 | 自拍av在线 | 四虎4hu永久免费入口 | 亚洲大尺度在线观看 | 欧美激情一二三区 | 欧美性高潮 | 欧美日韩综合一区二区三区 | 青草一区 | 色午夜av| 日韩视频专区 | 一区二区三区亚洲视频 | 黄色成人免费视频 | 午夜tv影院 | 成人黄色a级片 | 综合五月网 | 成人黄色在线 | 精品一区二区三区日韩 | 午夜免费看 | 亚洲一级网站 | 91偷拍精品一区二区三区 | 亚洲国产视频一区 | 日韩网|