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 变量作为参数传递: 语法

#(单个参数)

@app.route('/find_girl/')

#视图名称

def findGirl(name):

    return 'Hello girl,name is {}'.format(name)

#(多个参数)

@app.route('/find_girl//')

#视图名称

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/') #传递进来的数据 都更改为n字符串

@app.route('/arg_type/')    #限制传递数据类型为int

@app.route('/arg_type/')  #限制传递数据类型为float

@app.route('/arg_type//')  #将路由地址后面的所有 都认为是参数

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'))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,183评论 22 257
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,657评论 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,403评论 1 92
  • 为用户创造价值的才是好的产品 第二章 方法 2.1 启动阶段 1、善于模仿,不要重新发明轮子,模仿中加入创新 2、...
    肖神可阅读 216评论 0 2
  • 琪琪起了床,看了看时间,今天上午舍友们也都有课呢!“起来了,要迟到了。”琪琪喊完后就走了。被吵醒的戴溪生气了...
    延Love阅读 327评论 0 0