flask为了将请求的URL匹配到对应视图函数,flask中存储了一个路由表(app.url_map)其中定义了URL规则和视图函数的映射。
如果找到了对应的视图函数,将展示。否则显示404。
可以通过flask routes来展示app.url_map表中解析到的数据
从这里我们可以看到每个路由或者说是接口对应的方法,参数等信息
在flask中,我们可以通过在@app.route()装饰器后设置http请求的方法,类似springboot中的requestMapping
如果请求的方法的方式和设置的不符合,将提示405(Method Not Allowed)
因为flask默认请求的URL为字符串,所以Flask内置了URL变量转换器
<int>限制了year必须是一个整数
<any>限定了必须在url上填入你选中的值
其实个人比较难理解什么是钩子,书上是认为请求的预处理和后处理被认为是一个钩子。
PS:after_request和after_this_request钩子必须接受一个响应对象作为参数,并且返回一个响应对象。
Flask 表单form.validate_on_submit()什么情况下会是false??1、在form中受到validators控制,不满足条件就会导致false
2、在form中使用了raise抛出异常后也会false。
3、表单的地方没写{{ form.csrf_token }},在HTML 里加上就好
4、定义表单时没写validators=[DataRequired()],如果不写这句,form.validate_on_submit()就认为表单是空的,所以会false。
这里注意如果是from flask_wtf import FlaskForm,validators里一定是DataRequired,如果是from flask_wtf import Form 那就是Required
account = StringField(u'账号', validators=[DataRequired()])
password = PasswordField(u'密码', validators=[DataRequired()])
submit = SubmitField(u'登录')
1
2
3
5、中文编码问题(好像python3不存在这个问题)
上面已经写出来了,StringField(u’账号’, validators=[DataRequired()]),如果label有中文的话,一定要加Unicode,不然也会false的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)