flask 视图函数的使用
flask框架 视图函数当中 各种实用情况简单配置
1 建立连接
2 路由参数
3 返回网络状态码
4 自定义错误页面
5 重定向
6 正则url限制 和 url 优化
7 设置和获取cookie
- #coding:utf8
- # 导入flask
- from flask import Flask,abort,redirect,make_response,request
- from werkzeug.routing import BaseConverter
- # Flask 接受一个参数__name__ 作用是指明应用的位置
- app = Flask(__name__)
- '''
- 1 建立一个前后台链接
- 装饰器的作用是陆游映射到视图函数index
- 访问根目录就会进入index视图函数
- '''
- @app.route('/')
- def index():
- # 返回后会调用make_response
- return "你好 世界!"
- '''
- 2 给路由传参数
- 传递的参数在<name>当中 这个变量名称也要传递给视图函数
- 可以在<int:name> 或者<string:name> 指定传递参数的类型
- 不指定类型默认使用string类型
- '''
- @app.route('/attr/<string:attr>')
- def attr(attr):
- return "hello,%s"%attr
- '''
- 3 返回网络状态码的两种方式
- 01 return 字符串,状态码
- 02 abort(状态码)
- 200 成功
- 300 重定向
- 404 未找到
- 500 服务器内部错误
- '''
- #01 return 字符串,状态码 这种方式 可以返回不存在的状态码 前端依然能得到页面
- @app.route('/status')
- def status():
- # 用这种方式可以返回假的状态码 前端依然能够渲染
- return 'hello status',999
- #02 利用abort(状态码) 进行返回状态码,只能写入真的状态码
- # 这个函数的作用是 自定义我们项目的 出错页面
- @app.route('/abort')
- def geive500():
- abort(500)
- '''
- 4 捕获访问我们flask后台发生各种错误的情况
- 利用@app.errorhandler(500) 进行装饰 能截获500的response
- '''
- # 捕获500异常 函数当中接受到错误信息
- @app.errorhandler(500)
- def error500(e):
- return "您请求的页面后台发生错误!错误信息:%s"%e
- @app.errorhandler(404)
- def error404(e):
- return "您访问的页面飞去了火星!信息:%s"%e
- '''
- 5 重定向
- 有两种方式:
- 01 redirect(url)
- 02 url_for(视图函数)
- '''
- @app.route('/redirect')
- def redir():
- return redirect('http://www.baidu.com')
- '''
- 6 url正则
- 两个用途: 限制访问 和 优化访问路径
- 使用:
- 01首先要 定义一个继承自BaseConverter的子类
- 在子类里面调用父类的初始化方法
- 重写父类的变量
- 02然后 给applurl_map.converters 字典添加re健 和 我们自己写的类做val
- 03最后 视图函数的app.route('路径<re(正则),变量名>')
- 变量名要传给视图函数做参数
- '''
- # 01 写一个继承自 BaseConverter的子类 相应的方法和属性要重写
- class Regex_url(BaseConverter):
- def __init__(self,url_map,*args):
- super(Regex_url,self).__init__(url_map)
- self.regex = args[0]
- # 02 添加re映射
- app.url_map.converters['re'] = Regex_url
- # 03 正则匹配参数
- # 利用正则对传入参数进行限制
- # 只有1到3位小写英文才能成功 否则都是404
- @app.route('/attr2/<re("[a-z]{1,3}"):attr>')
- def attr2(attr):
- return "hello %s"%attr
- '''
- 7 设置cookie 和 获取 cookie
- 设置cookie:
- 利用 make_response() 拿到response对象
- response.set_cookie(key,val)
- 获取cookie:
- 利用request.cookies.get(key) 获取cookie
- '''
- # 设置cookie
- @app.route('/set_cookie')
- def setCookie():
- response = make_response('设置cookie')
- response.set_cookie('log','设置的cookie')
- return response
- # 获取cookie
- @app.route('/get_cookie')
- def getCookie():
- log = request.cookies.get('log')
- return log
- if __name__ == '__main__':
- # 执行后台服务器
- app.run(debug=True)
flask 视图函数的使用的更多相关文章
- Flask视图函数报fmalformed url rule错误的原因
Flask视图函数报fmalformed url rule错误,原因可能是包含中文字符了 把标点符号都重新写一遍英文格式的,可能就不会报这个了
- Flask视图函数与普通函数的区别,响应对象Response
视图函数与普通函数看似没什么区别,其实他们的返回值上有着很大的区别. from flask import Flask app = Flask(__name__) @app.route('/hello' ...
- Flask视图函数与模板语法
1.Django中的CBV模式 2.Flask中的CBV和FBV def auth(func): def inner(*args, **kwargs): result = ...
- Flask实战第6天:视图函数Response返回值
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...
- flask 在视图函数里操作数据库
在视图函数里操作数据库 在视图函数里操作数据的方式和在python shell中的联系基本相同,只不过需要一些额外的工作.比如把查询结果作为参数 传入模板渲染出来,或是获取表单的字段值作为提交到数据库 ...
- flask 在视图函数中验证表单
在视图函数中验证表单 因为现在的basic_form视图同时接受两种类型的请求:GET请求和POST请求.所以我们要根据请求方法的不同执行不同的代码.具体来说,首先是实例化表单,如果是GET请求,就渲 ...
- Flask如何给多个视图函数增加装饰器
这几天在学习Flask, 遇到了些小问题,比如说怎么给多个视图函数加相同的装饰器 给单独一个视图函数加装饰器的话很简单,写一个装饰器,然后直接加在原装饰器下面即可,多个的话,会报这样一个错误: 这个异 ...
- Flask从入门到精通之在视图函数中处理表单
在新版hello.py 中,视图函数index() 不仅要渲染表单,还要接收表单中的数据.更新后的index() 视图函数如下: @app.route('/') def index(): name = ...
- Flask之视图函数
视图示例 @app.route('/hello') def hello(): return 'Hello World' if __name__ == '__main__': app.run() 特殊的 ...
随机推荐
- python笔记之异常
异常 內建异常在exceptions模块内,使用dir函数列出模块的内容. 自定义异常类:继承基类Exception. 异常可以使用raise语句引发,可以使用try ... except ... e ...
- AngularJS - 常用方法汇总
1. 数组元素的常用方法: http://www.cnblogs.com/diaosizhang/p/3729078.html 2. js的强大的splice方法 http://www.jb51.n ...
- java大数(BigInteger)
JAVA之BigInteger 用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂.用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的 ...
- Redis查询,设置超时时间
1.定义 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted ...
- 【Saltstack】Saltstack简单说明
[Saltstack] Saltstack是一个服务器集中管理中心平台,可以帮助管理员轻松的对若干台服务器进行统一操作.类似的工具还有Ansible,Puppet,func等等.相比于这些工具,sal ...
- 【Docker】Docker概述
[Docker] Docker可以说是近几年非常热门的技术之一了.不管是别人敦促我还是从自己的想法来说,都觉得Docker这玩意儿肯定是要好好学习一下的,无奈没啥时间专门播出来给Docker,一直以来 ...
- 设计模式 --> (7)外观模式
外观模式 外观模式为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 适用性 1.为一个复杂子系统提供一个简单接口. 2.提高子系统的独立性. ...
- Hook 无侵入式埋点(页面统计)
一.技术原理 Method-Swizzling 黑魔法 方法交换(不懂的可以查) 二.页面统计 某盟页面统计SDK需要开发者在APP基类里实现ViewDidAppear和viewDidDisappea ...
- Node.js + gulp 合并静态页模版,文件更新自动热重载。浏览器可预览
github地址:https://github.com/Liaozhenting/template 使用的是ejs的语法.其实你用什么文件后缀都可以,都是按ejs来解析. 模板文件放在componen ...
- JavaScript(第六天)【函数】
函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值的局部变量.函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值. 一.函数声明 函 ...