flask简单使用

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)

在这里插入图片描述

2.6 静态文件

2.6.1 以css文件为例

常见的cssjsimgs文件等均是我们所需要的静态资源文件。同样的,可以使用

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 - 当前请求方法。

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/113724988