模板wf_register.html:
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}Register{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Register</h1>
</div>
<div class="col-md-4">
{{ wtf.quick_form(form) }}
</div>
{% endblock %}
试图函数:
@web.route('/wf_register', methods=['POST', 'GET'])
def register():
form = RegisterForm()
if form.validate_on_submit:
user = User.query.filter_by(username=form.username.data).first()
email = User.query.filter_by(email=form.email.data).first()
if user is None and email is None:
user = User(username=form.username.data,
password=form.username.data,
email=form.email.data)
db.session.add(user)
db.session.commit()
return render_template('wf_register.html', form=form)
当访问 /wf_register.html时,报错:
AttributeError: 'NoneType' object has no attribute 'filter_by'
堆栈信息:
Traceback (most recent call last):
...
File "E:\python\flaskp\venv\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "E:\python\flaskp\venv\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "E:\python\flaskp\venv\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "E:\python\flaskp\venv\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "E:\python\flaskp\venv\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "E:\python\flaskp\waffle\app\web\main.py", line 32, in register
user = User.query.filter_by(username=form.username.data).first()
AttributeError: 'NoneType' object has no attribute 'filter_by'
经反复核对。模型类应该继承自db.Model,而非Model,只有列才可以省略db。切记!