首页 技术 正文
技术 2022年11月15日
0 收藏 732 点赞 2,401 浏览 2675 个字

Flask入门(一)

1 安装虚拟环境Mac,linux

sudo pip install virtualenv

​ ubuntu系统

sudo apt-get install python-virtualenv

2 安装flask

1 python3 环境下全局安装
pip3 install flask2 虚拟环境下virtualenv下安装
首先先创建env虚拟环境
mkdir myproject #新建项目目录
cd myproject
virtualenv venv #安装虚拟文件目录venvsource /venv/bin/activate #启动新项目
pip3 install flask注:部分编辑器创建虚拟环境,Python的解释路径需要更改.3 pycharm中运行flask,选择flask创建project,一定要加载创建的虚拟环境,找到虚拟环境目录设置python解释器,设置项目目录

3 flask初起航

3.1最简单的flask程序
from flask import Flask   #导入类Flask
app = Flask(__name__) #类的实例是WSGI应用程序App# route() 装饰器把一个函数绑定到对应的 URL 上
@app.route('/')
def hello():
return 'hello python'#主函数入口
if __name__ == '__main__':
app.run()注:
(1) __name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块hello.py
,那么此模块名字__name__就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;
假如此模块是被import导入的,则此模块名字__name__为文件名 : hello,
通过if判断这样就会跳过“__mian__:”,不执行后面的函数.
(2) 启动参数:
debug 默认为False True debug=True不能用于生产环境
port 指定端口号 默认5001
host 指定主机名 host='0.0.0.0' 所有公网ip均可访问
threaded 线程 True
(3) 包括 Flask类引入,Flask类实例app,绑定路由,定义函数,设置主函数这5个过程.
(4) debug = True 可以进入debug模式,既可以不重启服务加载,又可以显示页面错误信息.
3.2 配置文件
1 新建一个config.py文件
2 在主app文件中导入这个文件,并且配置到app中,示例代码如下
import config
app.config.from_object(config)
3 还有很多其他的参数,都是放在改配置文件中,如SECRET_KEY等

4 flask参数与变量

4.1 变量
1 变量作为参数传递: 语法<variable_name>#(单个参数)
@app.route('/find_girl/<name>')
#视图名称
def findGirl(name):
return 'Hello girl,name is {}'.format(name)
#(多个参数)
@app.route('/find_girl/<name>/<age>')
#视图名称
def findGirl(name,age):
return 'Hello girl,name is {},age is {}'.format(name,age)
4.2 参数类型
(1) string 默认就为字符串
(2) int 限制传递进来的参数为 int类型 不做类型的转换
(3) float 限制传递进来的参数为 float类型 不做类型的转换
(4) path 将请求的路由地址后面的所有参数 都认为是一个参数的值 不再做路由的查找@app.route('/arg_type/<string:arg>') #传递进来的数据 都更改为n字符串
@app.route('/arg_type/<int:arg>') #限制传递数据类型为int
@app.route('/arg_type/<float:arg>') #限制传递数据类型为float
@app.route('/arg_type/<path:arg>/') #将路由地址后面的所有 都认为是参数

5 构造响应与抛出异常

5.1 构造响应
下面我们来讲下构造响应:
构造响应通过导入 from flask import make_response
可以使用 render_template() 方法来渲染模板 404模板页面 : error.html@app.route('/res')
def res():
response = make_response(render_template('error.html'), 404)
return response
浏览器页面结果: 响应结果
5.2 抛出异常
需要引入abort   from flask import abort    先抛出错误状态码再捕获#抛出500错误码
@app.route('/look_meizi/')
def look_meizi():
abort(500)#捕获指定的404状态码 支持错误页面的定制
@app.errorhandler(404)
def page_not_found(e):
return '你请求的地址被外星人挟持走了!!!'#捕获500服务器错误状态码
@app.errorhandler(500)
def server_error(e):
return e

6 重定向与构造URL

6.1 重定向
需要 from flask import redirectdef myRedirect():
#重定向到res绑定的URL
return redirect('/res')
#或者重定向带参数的URL
return redirect('/find_girl/name')
6.2 构造URL(URL反转):
  • 在页面重定向中会使用url反转,url_for(‘hello’)可以找到hello视图函数对应的路由
  • 在模板中,也会使用url反转.
如果 Flask 能匹配 URL,那么 Flask 可以生成它们吗?当然可以
构造URL通过引入 from flask import url_for@app.route('/redirect/')
def myRedirect():
#url_for 重定向接路由地址,redirect重定向到改地址,因此一般组合用起来很方便 #url_for 构造无参url
# return redirect(url_for('hello'))
#url_for 构造带参url,这样不管find_girl的路由怎么变,都可以重定向至该页面
return redirect(url_for('find_girl',name='goodsunck'))
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,918
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,444
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,069
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,701
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741