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框架初体验(第六天)的主要内容,如果未能解决你的问题,请参考以下文章