MVT
M:模型 负责与数据库进行交互
V:视图(视图函数)负责业务逻辑的处理
T:模板 负责展示
MVC
M:模型 负责与数据库进行交互
V:视图(模板 负责展示)
C:控制器(视图(视图函数)负责业务逻辑的处理)
web网站架构:
1.B/S
浏览器–》服务器
2.c/s
客户端–》服务器
##一、Flsak框架
flask是一个非常小的pythonweb框架 被称之为微型框架 只有一个强健的核心
所有的功能都要依赖于第三方扩展库(要安装第三方扩展库)
pip install flask #安装flask
代码
from flask import Flask
app=Flask(__name__)
#路由访问地址:127.0.0.1:5000
#默认端口号5000
@app.route('/')
def index():
return 'Hello Flask!'
if __name__ == '__main__'
app.run()
| 参数 | 说明 |
| -------- | --------------------------- |
| host | 主机 默认127.0.0.1 0.0.0.0 |
| port | 端口号 默认 5000 |
| debug | 调试模式 默认False 开启True |
| threaded | 开启多线程(本地没意义的) |
‘’’***实例
python
app.run(host=“0.0.0.0”,port=5001,debug=True,threaded=True)
‘’’
‘’’*开发:
python
app.run(debug=True)
‘’’
####(2)带一个参数的路由地址
‘’’
@app.route(’/arg/’)
def arg(argname):
return ‘参数argname的值为{}’.format(argname)
‘’’
###(3)一个参数并限制参数类型
‘’‘python
#限制参数类型
#参数默认类型都为字符串
#@app.route(’/arg//’)
#@app.route(’/arg/int:age/’)#限制参数类型为int类型
#@app.route(’/arg/float:age/’)#限制参数类型为float类型
#@app.route(’/arg/path:age/’)#限制参数为字符串类型‘/’不再做为分隔符,而是参数值得一部分
@app.route(’/arg/staring:age/’)#默认就为字符串
def arg(age):
print(type(age))
return ‘带一个参数的路由地址{}’.format(age)
‘’’
####(4)传递多个参数
‘’’
@app.route(’/args///’)#中间是’/’
@app.route(’/args//’)#中间是’’
def args(arg1,arg2):
return '参数1的值为{} 参数2的值为{} '.format(arg1,arg2)
‘’’
####(5)参数可有可无的视图函数
‘’’
#可有可无参数的视图
@app.route(’/arg1/string:age/’)#默认就为字符串
@app.route(’/arg2/’)#默认就为字符串
def arg(age=‘default’):
print(type(age))
return ‘带一个参数的路由地址{}’.format(age)
‘’’
注意:
- 路由地址结尾的/ 建议都加上 如果在定义的时候没有/作为结尾 则访问的时候路由地址也不能有/ 否则404
- 如果定义的时候 有/作为结尾 但是访问的时候没有/ 则框架会自动301重定向 来帮你添加/
- 路由地址结尾的/如果
1.URL反转:根据视图函数名称得到当前所指向的url
2.url_for() 函数最简单的用法是以视图函数名作为参数,返回对应的url,还可以用作加载静态文件
from flask import Flask,abort,request,Response#导入flask类
from flask import url_for,redirect
app = Flask(__name__)#类的实例化
@app.route('/testdirect/')#重定向
def testdirect():
# return redirect('/')
return redirect('/arg1/张三/14/')
#一个参数
@app.route('/arg/<int:age>/')
def arg(age):
return '年龄是:{}'.format(age)
#两个参数
@app.route('/')
def index():
abort(404)
# abort(500)
return "首页"
@app.errorhandler(500)
def server_error(err):
return '错误信息{}'.format(err)
@app.errorhandler(404)
def not_found(err):
return '错误信息{}'.format(err)
rt0')
def abort0():
abort(300)
@app.route('/abort1')
def abort1():
abort(400)
@app.route('/abort2')
def abort2():
abort(500)
@app.route('/abort3')
def abort3():
abort('A test of flask.abort()')
@app.route('/abort4')
def abort4():
abort(Response('A test of flask.abort(), Response, '))
@app.route('/abort5')
def abort5():
abort()
@app.route('/abort6')
def abort6():
cnum = request.args.get('num', '')
if cnum == '' or not cnum.isdigit():
abort(404)
else:
abort(int(cnum))
def arg1(name,age):
return '姓名是:{},年龄是:{}'.format(name,age)
if __name__=='__main__':#主文件运行flask,如果被别人导入则不运行
app.run(host='127.0.0.1',port=5001,debug=True)