我正在尝试严格遵循 Miguel 的出色教程(https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins),复制并粘贴所需的文本以尝试消除错误。我已经到达“在模板中显示登录用户”部分,但是当我尝试运行该应用程序时,它启动正常,但浏览器显示错误,并且 CMD 会话中存在诊断信息(我使用的是 Windows)。这将在下面进一步提供。
我是 Python/Flask 的新手,但我猜测其中一个被调用的例程没有返回值,但是在阅读了 app.py 代码后,我真的找不到我犯了什么错误。如果有人能指出我正确的方向,我很乐意继续该教程。
routes.py 文件包含登录代码:
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '':
next_page = url_for('index')
return redirect(next_page)
它是..if form.validate_on_submit()..
问题发生的地方
我希望在 127.0.0.1:5000 上获得登录屏幕,但浏览器显示:-
内部服务器错误
服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出现错误。
调用的URL是“http://127.0.0.1:5000/login?next=%2F http://127.0.0.1:5000/login?next=%2F"
CMD 窗口显示以下错误消息:-
[2019-09-07 18:13:47,941] 应用程序中的错误:/登录时出现异常 [GET]
回溯(最近一次调用最后一次):
文件“c:\users\tribl\venv\lib\site-packages\flask\app.py”,第 2446 行,在 wsgi_app 中
响应 = self.full_dispatch_request()
文件“c:\users\tribl\venv\lib\site-packages\flask\app.py”,第 1952 行,在 full_dispatch_request 中
返回 self.finalize_request(rv)
文件“c:\users\tribl\venv\lib\site-packages\flask\app.py”,第 1967 行,在 Finalize_request 中
响应 = self.make_response(rv)
文件“c:\users\tribl\venv\lib\site-packages\flask\app.py”,第 2097 行,在 make_response 中
“视图函数没有返回有效的响应。”
TypeError:视图函数未返回有效响应。该函数要么返回 None,要么在没有 return 语句的情况下结束。
127.0.0.1 - - [2019 年 9 月 7 日 18:13:47] “GET /login?next=%2F HTTP/1.1” 500 -