PythonWebLesson1
为什么要学习框架?
- 没有规矩不成方圆
- 站在巨人的肩膀上
- 本学期重点 Flask 框架的学习
MVC
是一种设计模式,提高了代码的拓展性和复用性。
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)
没有前后端分里之前,前端的代码是和后端业务逻辑的代码混合在一起的,也就是说作为后端的程序员必须要懂得前端的知识。开发效率很低。
而前后端分离后,前端人员只需要专注html,js,css的编写即可,后台人员专注于业务逻辑,接口的编写即可。
请求数据只需要调用对应的请求接口即可
第一个flask程序
1.右上角点击File -> 2.选择Flask框架 -> 3.命名
下载相关的文件,耐心等待
点击右上角的播放键
点击蓝色的url地址
出现Hello World!字样,恭喜你第一个flask程序创建成功了
分析代码
#导入flaks类
from flask import Flask
# name参数用于查找资源的路径
app = Flask(__name__)
#路由
@app.route('/')
def hello_world():
return 'Hello World!'
#应用启动
if __name__ == '__main__':
app.run(debug=True)
创建路由
#这是我们自己创建路由
@app.route('/myroute')
def myroute():
return '好想出去玩啊'
每进行一次就该就要重启服务器,点击右上角绿色的返回按钮。或者app.run那的播放键
测试http://127.0.0.1:5000/myroute成功显示
路由限定
url默认Get请求
按F12选择network在测试页面刷新看看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gJUqgku1-1586669975168)
使用POSTMAN发送模拟请求数据
在实际的应用中不只有GET请求,还有POST , PUT , DELETE请求如何添加请求方式呢?
@app.route('/myroute',methods=['POST','PUT'])
def myroute():
return '好想出去玩啊'
测试一下
路由传参
不可能每个人的页面都单独做一个页面,整体相同局部不同。
对url的参数进行解析,到后端进行处理,返回个性化的界面
用这个方法我们就可以查看B站的第一个账号
嗯没错就是这个B。。。。。站用户
#路由传参
#<参数名>
@app.route('/space/<userid>')
def getparam (userid):#传入参数
return '我的id %s'%userid #显示对应的字符串
问题来了,那岂不是乱传也可以?
对乱搞的行为加以限制,永远不要相信用户给你的数据!!
如果是订单,需要的是整形如何加以限定
# 在参数前面加上 类型:
@app.route('/space/<int:userid>')
jinji2模板
网页动态显示
1.首先导入模板类 render_template
from flask import Flask,render_template
2.在模板中创建网页
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
我是首页
</body>
</html>
渲染首页
# 渲染首页
@app.route('/index')
def index():
# 填入网页名称
return render_template('index.html')
在http://127.0.0.1:5000/index中查看渲染情况
动态传值
变量代码块
使用{{}}来表示变量名,语法叫做变量代码块
{#{{ param_str }}#}这样注释
ctrl+/快捷键
# 导入flask项目,模板
from flask import Flask, render_template
# 创建Flask应用程序实例,传入__name__定义资源路径
app = Flask(__name__)
# 定义路由以及视图函数
@app.route('/index')
def index():
# return 'Hello py!'
param_str = 'hello flask'
#变量名和html的参数保持一致
return render_template('index.html', param_str=param_str)
if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h1>我是首页</h1>
{{ param_str }}
{#注释#}
{#{{ param_str }}#}
</body>
</html>
@app.route('/index')
def index():
# 传字符串
param_str = 'hello flask'
# 传列表
param_list = [1, 2, 3, 4]
#传字典
param_dict ={
'name': 'weiming',
'age': 18
}
# 变量名和html的参数保持一致
return render_template('index.html', param_str=param_str, param_list=param_list,param_dict=param_dict)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
我是首页
{#注释#}
{#{{ param_str }}#}
{{ param_str }}
<hr>
列表
{{ param_list }}
<hr>
列表取值
{{ param_list.0 }}
<hr>
列表取值
{{ param_list[0] }}
<hr>
传字典
姓名:{{ param_dict['name'] }}
<br>
年龄:{{ param_dict['age'] }}
<br>
param_dict{{ param_dict }}
</body>
</html>
控制代码块
通过控制语句,条件输出for,if
for
快捷键输入for,按Tab快速生成
{% for 参数 in 列表名 %}
{{参数}}
{% endfor %}
{% for param in param_list %}
{{ param }}
{% endfor %}
if
小于三才输出
{% for param in param_list %}
{% if param<3 %}
{{ param }}
{% endif %}
{% endfor %}
根据规定样式输出
按Tab快速生成
{% for 参数 in 列表名 %}
{{参数}}
{% endfor %}
{% for param in param_list %}
{{ param }}
{% endfor %}
过滤器
根据规定样式输出