介绍与使用
Flask是由python实现的一个web微框架,让我们可以使用Python语言快速实现一个网站或Web服务。
最主要的是小(微框架)
首先看看flask的安装:https://dormousehole.readthedocs.io/en/latest/installation.html
简单使用
开启debug模式的一个小坑,总是没开启。可以看看这个
https://www.jianshu.com/p/59b8d17b889f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
路由和变量规则
路由
add_url_rule和@app.route等价
通过查看@app.rout,它底部调用的也是add_url_rule
add_url_rule至少需要一个rule,还需要一个试图函数
可以看出,通过add_url_rule和使用装饰器是一样的。
变量规则
路由链接通过使用参数,得到想要的不同变量值。key 就是一个变量,默认是字符串
除此之外,通过官方文档查看,flask路由变量中还可以接受的数据类型
int类型
尝试着使用int类型
发现报错,不支持返回int,所以直接转str
float类型
path类型
顾名思义,path就是一个路径,在后面跟一串路径时会用到。
可以看到path其实就是一个str类型
uuid类型
uuid类型比较特殊,uuid时唯一标识,简单通过一个脚本先创建一个
唯一url
简单来理解就是,代码里路径包含/,最后请求无论带不带都可以请求成功。
如果写的代码没有最后路径的/,那么请求时带上最后的/就会出错。
Flask的响应返回类型
从之前的一次报错信息查看,返回类型可以是str,dict,tuple,Respons instance,WSGI callable
1.str字符串
@app.route('/index')
def index():
return '北京'
通过查看返回头信息,是html类型,那么就可以尝试加入html标签,可以看出是生效了的
//将str进行Response封装,最终返回的也是respnse对象。带着疑问看第4种类型
2.dict 字典类型
返回json格式数据,此时加入标签则不能生效
3.tuple元组
发现确实是元组,却不行。先缓一下。看下一个response对象
//严格意义上,这里的元组是一个内容+状态码
或者404,自定义一些错误
4.response对象
flask官网查一下Response
返回response对象,最开始返回的str也是相当于把str内容返给Response进行包装。再返回的。
有时,为了在返回中加入某些自定义的头信息,也会使用make_response ()函数
URL构建
这里不知道这个用来干什么。暂时只想到,在之后使用中,比如登录,之后返回一个另一个url访问。。先不管,继续往下学习。
request 对象
HTTP请求
先上图
请出Postman
这里相同的路径可通过不同的方法得到不同的结果。可以用在比如profile填写一类的东西吧。get请求profile,post更新编辑profile
获取参数
当发送一个请求时,想知道这个请求传递的参数。方便观察,可以把它搞出来。Get方法可以通过request.args.get获
html页面渲染
通过使用render_template来返回前端html页面。
app = Flask(__name__)
在创建时,默认模版文件夹路径为templates,所以只需要把html文件放在templates目录下,就可以使用render_template去找html文件,进行渲染成str类型,返回。
例1:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
<style>
div{
width: 100%;
height: 200px;
border:2px solid cornflowerblue;
}
</style>
</head>
<body>
<h1>大型交友网站凸^-^凸</h1>
<div>
<form action="/register2" method="get">
<p><input type="text" name="username" placeholder="请输入用户名"></p>
<p><input type="password" name="password" placeholder="请输入密码"></p>
<p><input type="submit" placeholder="提交"></p>
</form>
</div>
</body>
</html>
ps:当遇到404问题时,可以通过使用 errorhandler() 装饰器以定制出错页面: