文章目录
0. 前言
Flask
是一个使用 Python
编写的轻量级 Web
应用程序框架。
1. 安装
pip install flask -i https://pypi.douban.com/simple
1.1 最简单案例
from flask import Flask
app = Flask(__name__) # __main__
@app.route('/') # rule 参数表示与该函数的URL绑定。
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run() # app.run(host, port, debug, options)
2. 简单使用
2.1 路由
@app.route('/hello/<name>') # http:// localhost:5000/hello/w3cschool
def hello_name(name):
return 'Hello %s!' % name
@app.route('/blog/<int:postID>') # http://localhost:5000/blog/11
def show_blog(postID):
return 'Blog Number %d' % postID
@app.route('/rev/<float:revNo>') # http://localhost:5000/rev/1.1
def revision(revNo):
return 'Revision Number %f' % revNo
2.2 url_for()
函数
动态构建特定函数的URL
,如:
@app.route('/admin')
def hello_admin():
return 'Hello Admin'
@app.route('/guest/<guest>')
def hello_guest(guest):
return 'Hello %s as Guest' % guest
@app.route('/user/<name>')
def hello_user(name):
if name =='admin':
return redirect(url_for('hello_admin'))
else:
return redirect(url_for('hello_guest',guest = name))
2.3 method方法指定
<form action = "http://localhost:5000/login" method = "post">
<p>Enter Name:</p>
<p><input type = "text" name = "nm" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['nm']
return redirect(url_for('success',name = user))
else:
user = request.args.get('nm')
return redirect(url_for('success',name = user))
POST
通过request.form['nm']
获取,GET
通过request.args.get('nm')
获取。
2.4 使用模板
新建一个templates
文件夹,然后在下面新建一个hello.html
模板文件。
然后,使用template_folder="templates"
中指定模板文件夹,然后按照下面可以使用模板文件:
from flask import Flask, render_template
app = Flask(__name__, template_folder="templates") # __main__
@app.route('/')
def hello_world():
return render_template("hello.html")
if __name__ == '__main__':
app.run() # app.run(host, port, debug, options)
2.5 模板变量
在模板中,和springboot
中的theamleaf
模板类似。可以使用变量,传入值,即模板变量。
在html
中使用{
{ my_str }}
中来使用在render_template
中传入的my_str
:
html
模板文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Hello {
{ username }}
</body>
</html>
服务器程序:
from flask import Flask, render_template
app = Flask(__name__, template_folder="templates") # __main__
@app.route('/<username>')
def hello_world(username):
return render_template("hello.html", username=username)
if __name__ == '__main__':
app.run() # app.run(host, port, debug, options)
扫描二维码关注公众号,回复:
12845146 查看本文章
2.6 静态文件
2.6.1 以css
文件为例
常见的css
、js
、imgs
文件等均是我们所需要的静态资源文件。同样的,可以使用
app = Flask(__name__, template_folder="templates", static_folder="static")
来指定静态资源的路径。
新增static
文件夹,然后在其下新增css
文件夹,并创建index.css
文件,
index.css
文件的内容如下:
*,body{
background-color: #333;
}
.test{
color: red;
font-size: 30px;
}
对应的html
模板文件中,使用如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link type="text/css" rel="styleSheet" href="{
{ url_for('static', filename = 'css/index.css') }}"/>
<title>Title</title>
</head>
<body>
<p class="test">Hello {
{ username }}</p>
</body>
</html>
然后服务端的程序,如下:
from flask import Flask, render_template
app = Flask(__name__, template_folder="templates", static_folder="static")
@app.route('/<username>')
def hello_world(username):
return render_template("hello.html", username=username)
if __name__ == '__main__':
app.run() # app.run(host, port, debug, options)
效果:
然后,通过简单的页面分析,可以得到index.css
的访问路径为:
http://127.0.0.1:5000/static/css/index.css
2.6.2 静态图片资源
类似的,我们可以在模板中使用图片资源,同样的新建static/img/tu.png
文件,然后我们可以这样引用:
<img src="{
{ url_for('static',filename='img/tu.png')}}" />
2.6.3 注意
【注】上面的静态资源文件,均可直接使用绝对路径来引用,如/static/css/index.css
。
2.7 Request对象
Request
对象的重要属性如下所列:
Form
- 它是一个字典对象,包含表单参数及其值的键和值对。即:POST
请求。args
- 解析查询字符串的内容,它是问号之后的URL
的一部分。即:GET
请求。Cookies
- 保存Cookie
名称和值的字典对象。files
- 与上传文件有关的数据。method
- 当前请求方法。