Python轻量级Web框架Flask(2)——Flask模板渲染/Flask项目拆分
1、run启动参数详解:
- debug 是否开启调试模式,开启后(debug = true)修改过python代码会自动重启,不用停止运行之后再去启动。
- port 启动指定服务器的端口号,默认是5000。
- host 主机,默认是127.0.0.1(只有本机可以访问),指定为0.0.0.0代表本机所有ip。
2、完整的进行一次Flask模板渲染:
- 第一步:在pycharm专业版中新建Flask项目
上图是用来说明下图中新建文件夹下,多出来两个文件夹的作用。【注意,flask项目中py文件最好命名为app】
- 第二步:给各个文件夹中配置文件(同一个页面的css和html文件最好命名一致)
- app.py代码:
from flask import Flask, render_template
a = Flask(__name__)
'''
创建实例 第一个参数时应用模块或者包的名称 一般传输__name__,作用是让stu_2
所在的文件夹只能用于Flask项目。
'''
@a.route('/template_test/')
def temp():
# 模板渲染
return render_template('tem_test.html',name = 'brush_teacher')
'''
1、这里写了这个语句不能识别就可以用“alt+回车”导入,上面import就会自动导入
2、第一个参数是写在templates中的html文件的文件名,带后缀
3、还可以给html中传入变量
'''
- tem_test.html代码
if __name__ == '__main__':
a.run(debug = True) #可以不用停止py代码修改页面数据
- tem_test.html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 3种导入css文件的方式 -->
<!-- <link rel="stylesheet" href="../static/tem_test.css">-->
<!-- <link rel="stylesheet" href="/static/tem_test.css">-->
<link rel="stylesheet" href="{{ url_for('static',filename='tem_test.css') }}">
</head>
<body>
<h1>这是测试template渲染的html文件</h1>
<p1>第一段,样式蓝色</p1><br>
<p2>第一段,样式红色:这里是测试render_template中的数据能否传html文件的句子:{{ name }}</p2>
</body>
</html>
- tem_test.css代码
p1{color: blue}
p2{color: red}
3、Flask项目拆分:
-
项目文件展示
-
app.py代码
from App import creat_app
app = creat_app()
if __name__ == '__main__':
app.run(debug=True)
- App包中的init.py代码
# __init__.py : 初始化文件,创建Flask应用
from flask import Flask
from .views import blue
def creat_app():
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(blueprint=blue)
return app
- App包中的views.py代码
# 在views.py中放路由和视图函数
from flask import Blueprint
from .models import * #后面是用views来控制数据库的,所以要在views中导入models文件
# 蓝图
blue = Blueprint('user', __name__)
@blue.route('/')
def index():
return 'index'
- App包中的models.py该示例中没有用到,但是后面项目中肯定会用到。
- 结果展示
- 说明:
-
1、执行说明:首先程序会在app.py中开始执行,执行中第一步会将App这个包导入,然后就会执行App中的__init __.py文件,然后会在__init __.py文件导包时,去执行views.py中的代码,然后从views.py中导包时,进入到models.py中。执行完models.py的程序之后,会再次回到views.py中,执行views.py中的程序,此时就会将视图函数和路由全部都声明好,然后回到__init __.py中声明creat_app()函数,然后回到app.py中执行creat_app()函数(在执行该函数的时候才会和刚才函数中的蓝图绑定),最后才会在app.py中启动。宏观流程如下图:
-
2、蓝图介绍:
-
- 注意Flask项目拆分的目的是为了在写大型项目的过程中可以方便管理每个部分的代码。虽然项目拆分看着复杂,其实后面这个拆分方式就相当于模板了,用的时候直接套用即可,后面只需要在不同的项目中添加不同的插件即可。