flask 新手教程(一)
为什么使用flask
1,配置简单,因为单模块,他前身就是Werkzeug套件,但是作者嫌它还不够简单,应该单个python就能玩,所以改成这样,事实上也正是如此,造就了python里面最灵活的框架
应用场景,比较小型需要后台处理的页面程序,可视化,读写数据库,api,只要你有一个普通的python+html知识就能写一个挺不错的动态页面了,而且也有挺多的扩展,先挖个坑,以后会详细介绍部分扩展
怎么安装
安装完python之后
pip install flask
然后扩展也是用pip
第一个程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True,port=6500)
app就相当于创建一个application项目吧
app = Flask(name,static_url_path=’/static’) 就是定死static文件夹的位置,为什么一定要指定呢待会会讲,
debug=True 一旦运行就会进入实时的debug状态,你编辑保存,不需要重启,只需要刷新页面就能呈现
@app.route()
就是路由,引号里面可以写路由的位置,可以带参数传递,后面会讲
本质上python 的socket 库也能做到,只是有车轮何必要造呢?
emmm 虽然它是最灵活,但也是比较慢的,练手是绝对挺不错的,新出有个比较快而且和flask高度接近的框架叫fast-api ,以后介绍
对,我就是挖坑,挖很多坑,越多越好。。。。。。
好的继续看以下介绍路由,jinja2template,带参传递,自定义404html
路径结构
abcde.py
index.html
1.jpg
py文件放工程根目录,templates和static各自在工程根目录之后 ,放错地方是找不到连接的,注意哦,404.html 放templates
abcde.py
from flask import Flask, render_template, current_app,request,abort
@app.route('/')
def index()
abc_1='abc'
img_1='1.jpg'
return render_template('index.html',abc=abc_1,img=img_1)
@app.route('/data/')
def abcd(data):
data_1=data
if data_1=="傻瓜":
abort(404)
return render_template('errors.html',data=data_1)
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html', title = '404'), 404
if __name__ == '__main__':
app.run(debug=True,port=6500)
index.html
errors.html
{{data}}
404.html
你才是傻瓜嘞,我是404
jinja2是可以支持循环和判断的,格式是 for的话 {% for s in single %}…{% endfor %},先卖个关子下节课再讲
参数传递支持 string ,int, list ,list 并不是讲一个python的list 直接放进去就好,那链接是 ‘/data/132,456’要每个元素跟逗号分隔开,所以如果不多的话可以将那些元素用python连起来成为string再放到该路由的函数里分解,例如 ‘/data/123_456’,然后在传递的路由的函数里是 data_1=data.split(’_’)这样,其实也是可以的
404,大家可以自定义404.html是啥样的,也可以重定向,重定向就下一节课讲吧
emmm 下一节课讲template循环判断,重定向,static的一些细节,懒的写抱歉了。



