Flask入门 flask结构 url_for 重定向(一)
Flask入门(一)
1 安装虚拟环境Mac,linux
sudo pip install virtualenv
ubuntu系统
sudo apt-get install python-virtualenv
2 安装flask
1 python3 环境下全局安装
pip3 install flask
2 虚拟环境下virtualenv下安装
首先先创建env虚拟环境
mkdir myproject #新建项目目录
cd myproject
virtualenv venv #安装虚拟文件目录venv
source /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 redirect
def 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'))
Flask入门 flask结构 url_for 重定向(一)的更多相关文章
- Flask入门之结构重组(瘦身)-第13讲笔记
1. pip list Flask 0.10.1 Flask-Bootstrap 3.3.5.6 Flask-SQLAlchemy 2 Flask-Script 2.0.5 Flask-WTF 0.1 ...
- Flask入门和快速上手
目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...
- 【Flask】 项目结构说明
项目结构 Flask的一大优势就是其极其轻量化.但是也需要注意到,如果我们要用Flask做一个大项目的话,把所有代码写在一个文件里肯定是不合适的.非常难以维护.但是和Django这种框架又不一样,Fl ...
- Flask—01-轻松入门Flask
Flask入门 WEB工作原理 C/S与B/S架构:客户端-服务器,浏览器-服务器 B/S架构工作原理 客户端(浏览器) <=> WEB服务器(nginx) <=> WSGI( ...
- Flask 入门(第二篇)
1. 数据库 Flask 没有限定使用哪种数据库,不管是 SQL 还是 NoSQL.如果你不想自己编写负责的 SQL语句的话,你也可以使用 ORM,通过 SQLALchemy 即可实现. 1.1 SQ ...
- Flask入门系列(转载)
一.入门系列: Flask入门系列(一)–Hello World 项目开发中,经常要写一些小系统来辅助,比如监控系统,配置系统等等.用传统的Java写,太笨重了,连PHP都嫌麻烦.一直在寻找一个轻量级 ...
- flask入门到入土
# Flask ## 0.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用 ...
- 超实用的Flask入门基础教程,新手必备!
Flask入门基础教程 Flask简介 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开发人员分工合 ...
- [python][flask] Flask 入门(以一个博客后台为例)
目录 1.安装 1.1 创建虚拟环境 1.2 进入虚拟环境 1.3 安装 flask 2.上手 2.1 最小 Demo 2.2 基本知识 3.解构官网指导 Demo 3.1 克隆与代码架构分析 3.2 ...
随机推荐
- Django 中的中间件
Django 中的中间件 Django 中间件 中间件介绍 前戏 之前在判断登录的时候使用的是装饰器的功能,通过给视图函数加装饰器来增加判断是否登录的功能.但此方法的缺点是必须给每个需要判断登录的视 ...
- 计算hashCode通用计算公式
1.java计算公式 @Override public int hashCode() { //设置初始值 ; //假设有效域为: name,age,idCardNo,incomeAnnual,sex, ...
- 剑指offer——面试题7:重建二叉树
// 面试题7:重建二叉树 // 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输 // 入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1, // 2, ...
- Notepad++ 代码格式化插件
UniversalIndentGUI 是一个代码格式化工具合集,基于很多开源的代码格式化项目.有NPP的插件版也有独立的程序,支持常见代码格式. 支持的代码格式: C, C++, C#, Cobol, ...
- PIXI 太空玉兔游戏(6)
想法来源 出于练习看到这篇文章 没有什么难度 效果如下,接下来会用pixijs讲解如何实现 创建应用及舞台 HTML部分只创建标签引入 pixi.min.js 即可: <script ...
- 【Tensorflow】 Object_detection之训练PASCAL VOC数据集
参考:Running Locally 1.检查数据.config文件是否配置好 可参考之前博客: Tensorflow Object_detection之配置Training Pipeline Ten ...
- (转)同步异步,阻塞非阻塞 和nginx的IO模型
同步异步,阻塞非阻塞 和nginx的IO模型 原文:https://www.cnblogs.com/wxl-dede/p/5134636.html 同步与异步 同步和异步关注的是消息通信机制 (sy ...
- 【CAD】创建多行文本
下面为OBJECT-ARX创建多行文本的代码,记录 McDbMText* Mx::AddMText(IN McDbBlockTableRecord* pBlkRec, IN LPCTSTR pszCo ...
- STL:map用法总结
一:介绍 map是STL的关联式容器,以key-value的形式存储,以红黑树(平衡二叉查找树)作为底层数据结构,对数据有自动排序的功能.命名空间为std,所属头文件<map> 二:常用操 ...
- TOJ 1856 Is It A Tree?
Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a ...