Python3 - Flask框架初体验(第六天)

Posted 韩俊强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 - Flask框架初体验(第六天)相关的知识,希望对你有一定的参考价值。

文章目录

1.Flask安装

pip install flask --- 写项目的框架
pip install flask-script --- 扩展插件, 以指令的形式启动醒目或者操作数据库

2.项目架构

MTV架构模式

M - 模型Model

​ 数据层 – 跟数据库相关联

T - 模板Template

​ 界面层 —展示数据层的 html文件

V - 视图View

​ 路由+视图

​ 路由 – 查找数据的向导

​ 视图 – 函数 — 跟路由绑定的数据

3.路由及重定向

路由
route(路由规则, endpoint, methods)
    路由规则 -- 字符串格式的定位导向
    endpoint -- 路由的标记(别名) 默认是跟路由绑定的视图函数名
    methods -- 设置请求方式 默认只接受get请求

反向解析路由
    根据视图函数名(其实是路由的别名), 获取对应的路由规则

重定向
    路由按照定向规则发生变化

4.实例用法

# 导入flask
from flask import Flask, render_template, url_for, redirect # 1. 导入Flask类 2. render_template 渲染模板 3.url_for 反向解析 4.redirect 重定向
# flask-script
from flask_script import Manager # 管理类 -- 管理项目启动等等

# 创建一个Flask对象
app = Flask(__name__)
print(app.config)
# 修改配置
app.config['ENV'] = 'development' # 设置成开发环境
app.config['DEBUG'] = True # 设置处于调试模式

# 把项目交给Manager类管理
manager = Manager(app)

# 设置路由+视图函数
@app.route('/') # 设置路由规则
def hello():
    return 'hello flask'

@app.route('/index/', endpoint='other')
def index():
    print(url_for('other')) # 反向解析

    # 设置一个数据 --- 存储班级中的学生信息
    '''
    每个学生都有: 姓名, 年龄, 成绩
    一个班级多个学生
    '''
    stus = [
        'name':'小韩哥', 'age':20, 'score':98,
        'name': '小花', 'age': 18, 'score': 66,
        'name': '刘美丽', 'age': 23, 'score': 89,
        'name': '马漂亮', 'age': 17, 'score': 76
    ]
    person = 'name':'小明', 'age':20, 'score':87
    # username 是模板中需要被赋值的变量名
    return render_template('index.html', username='xiaohange', students=stus, person=person)

@app.route('/main/', methods=['POST','GET']) # 既支持GET,又支持post
def main():
    # 请求这个路由的时候, 跳转到index 重定向
    return redirect(url_for('other'))
    

# 练习
# 设置数据结构
fruits_dic= 
    '热带水果':['荔枝', '菠萝', '芒果', '菠萝蜜'],
    '浆果':['草莓', '桑葚', '蓝莓', '蔓越莓'],
    '柑橘':['橘子', '橙子', '金桔', '柠檬']


@app.route('/fruit/', methods=['POST', 'GET'])
def fruit():
    return render_template('index2.html', fruits=fruits_dic, username='小韩哥')

# 标记这个文件是项目的启动文件
if __name__ == '__main__':
    # 启动项目
    manager.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<!-- 变量名 -->
    <h1>欢迎  username  进入Flask首页</h1>
    <h1>展示班级学生信息</h1>

    # 判断有没有学生, 没有学生的信息, 就展示一段文本: 还没有学生信息 #
    % if students %
        <table border="1" cellpadding="0" width="200">
        <tr>
            <td>姓名</td>
            <td>年龄</td>
            <td>成绩</td>
        </tr>
        % for stu in students %
            <tr>
                <td>stu.get('name')</td>
                <td>stu.get('age')</td>
                <td>stu.get('score')</td>
            </tr>
        % endfor %
    </table>
    % else %
        <p style="color:red;">还没有学生信息</p>
    % endif %

    #
    name --- 小明
    age ---- 20
    score --- 87
#
    % for key,value in person.items() %
        <p> key  ---  value </p>
    % endfor %
</body>
</html>

Index2.html

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>水果商店</title>
    <style>
        .welcome
            text-align:center;
        
    </style>

</head>
<body>
    <table border="5" cellpadding="0" width="800">
        <tr>
            <td>
                <p class="welcome">欢迎 username 来到Python2022的水果商店</p>
            </td>
        </tr>
        <tr>
            <td>
                % for key,value in fruits.items() %
                    <h3> key </h3>
                        <ol>
                             % for name in value %
                                <li> name </li>
                             % endfor %
                        </ol>
                % endfor %
            </td>
        </tr>
    </table>
</body>
</html>

以上是关于Python3 - Flask框架初体验(第六天)的主要内容,如果未能解决你的问题,请参考以下文章

python3第六天(数据结构)

据廖雪峰python3教程----python学习第六天

手写RPC框架 第六天 负载均衡

手写RPC框架 第六天 负载均衡

项目一:第六天 WebService写接口 和CXF框架

Flask开发系列之初体验