Python 使用 Flask框架记录

Python 使用 Flask框架记录

1、安装Flask

​ Flask依赖两个外部库,Werkzeug和Jinja2,Werkzeug是一个WSGI(服务器网关接口)。Jinja2时负责渲染模板。在安装Flask之前需要安装这俩个外部库,最简单的安装方式是使用Vritualenv创建虚拟环境。

1.1、安装虚拟环境

pip install virtualenv

​ 安装完成后 ,检测其的版本

virtualenv --version

在这里插入图片描述

1.2 、创建虚拟环境

virtualenv venv

1.3 、激活虚拟环境

venv\Scripts\activate

在这里插入图片描述

1.4、安装Flask

pip install flask

​ 查看其安装的包

pip list --format columns

在这里插入图片描述
至此已经安装好了Flask以及其需要的依赖库。

2、使用Flask

2.1、输出一个 hello word

from flask import Flask

app = Flask(__name__) #创建flask对象

@app.route('/')
def hello_world():
    return "hello world"

if __name__ == '__main__':
    app.run()

2.2、开启调试模式

又两种方式开启调试模式

app.debug = True
app.run

或者
app.run(debug=True)

2.3、flask 的路由

在Flask中提供@app.route()修饰器,会把修饰的函数注册成为路由

2.3.1、给url 添加变量部分

@app.route('/user/<username>')
def show_username(username):
    return 'User %s' % username
# 规则可以用<converter:variable_name>

# 定义可变参数的类型 定义参数是整形	
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'post_id %s' % post_id

2.3.2、构造url

Flask可以匹配url,也可构造url即为生成一个url,可以用url_for()来给指定的函数构造url。此方法可以返回show_post函数 url的信息

@app.route('/url/')
def get_url():
    return url_for('show_post', post_id=2)

2.3、设置Http的方法

在装饰其上,使用 methon=[]可以设置http请求的方法

@app.route('/login', methods=['GET', 'POST'])

3、静态文件&渲染模板

在项目中创建一个static的文件夹 ,将静态文件放到该文件夹中,在html中使用url_for生成路径。

flask会在模板文件中找html,一般会在templates文件夹下去找。

在这里插入图片描述

相关代码如下

from flask import Flask, url_for, request, render_template

app = Flask(__name__) #创建flask对象

@app.route('/')
def hello_world():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{{ url_for('static',filename='style.css') }}">
</head>
<body>
    <h1 id="eee">sss</h1>
</body>
</html>
#eee{
    color:red;
}

4、Jinja2模板渲染语言

{{name}} 获取name的值
{{mylist[1]}}获取集合中的值
{{myobj.some()}} 获取方法返回值
{% if %} -- {% else %}--{% endif %} 控制语句
{% for comment in comments %} --{% endfor %} 循环语句


Jinja2中还提供一些过滤器,具体请查。

Jinja2可以继承模板文件用于多出使用相同的代码。

posted @ 2019-07-27 20:26  yinder  阅读(188)  评论(0编辑  收藏  举报