(1)框架搭完后,对数据库的操作,如果存在migrations文件夹,则删除,执行下面语句
python manage.py db init
python manage.py db migrate
python manage.py db migrade
(2) 运行出现问题D:\Python27\python.exe: can't open file 'G:/flasky/hello.py': [Errno 2] No such file or directory
解决:右上角的运行配置还是以前的命令行,需要重新输入。
(3)把POST 加入方法列表很有必要,因为将提交表单作为POST 请求进行处理更加便利。表单
也可作为GET 请求提交,不过GET 请求没有主体,提交的数据以查询字符串的形式附加到
URL 中,可在浏览器的地址栏中看到。基于这个以及其他多个原因,提交表单大都作为
POST 请求进行处理。
(4)Python内置的@property装饰器就是负责把一个方法变成属性调用的
(5) python中 self指的是类实例对象本身(注意:不是类本身)
(6) TemplateNotFound: bootstrap/wtf.html? 因为在manage.py中没有 bootstrap = Bootstrap(app)
(7) 在页面上显示message时出现的问题,
password_confirm = PasswordField(label=u'确认密码', validators=[DataRequired(),
EqualTo('password', message=u'两次输入密码不匹配!')])
在html中没有显示出message的打印消息,原因是message是WTF中的方法,使用wtf.quick_form(form)才能调用
如果不想用怎么办? 直接把错误消息找到打印出来
{% for field in form %}
{% if field.type != 'CSRFTokenField' and field.type != 'SubmitField' %}
{{ field.label.text|safe}}:{{ field(class="form-control") }}
{% for error in field.errors %}
<span style="color:red;">[{{ error }}]</span>
{% endfor %}<br>
{% endif %}
{% endfor %}
**kwargs:把所有 key-value 形式的参数打包成一个 dict
(9)filter_by 和filter用法
query = query.filter_by(patentInfo.id==form.id.data)
query = query.filter_by(applicant=form.applicant.data)