python-Web-flask-路由和视图
1 路由和视图:
简介:
Flask框架包含两个核心:Werkzeug工具箱,Jinja2模板引擎
flask: 提供基本功能,属于轻量级
django: 提供相对完整功能,重量级
搭建虚拟环境
Helloworld :
#1.导入Flask类
from flask import Flask
#2.创建Flask对象接收一个参数__name__,它会指向程序所在的包
app = Flask(__name__)
#3.装饰器的作用是将路由映射到视图函数index
@app.route('/')
def index():
return 'Hello World'
#4.Flask应用程序实例的run方法,启动WEB服务器
if __name__ == '__main__':
app.run()
相关配置参数:
初始化参数:
app = Flask(__name__) static_url_path静态文件访问路径,默认为:/ + static static_folder静态文件存储的文件夹,默认为 static template_folder模板文件存储的文件夹,默认为 templates
加载参数:
from flask import Flask
app = Flask(__name__)
# 配置对象,里面定义需要给 APP 添加的一系列配置
class Config(object):
DEBUG = True
app.config.from_object(Config)# 从配置对象中加载配置
#app.config.from_pyfile('config.ini')# 从配置文件中加载配置
#app.config.from_envvar('FLASKCONFIG')# 加载指定环境变量名称所对应的相关配置
@app.route('/')
def index():
return 'Hello World'
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000, debug = True)
路由:
设置路由,路径,参数,请求方式
# 路由传递参数,整数,get或post方式
@app.route('/user/<int:user_id>',methods=['GET', 'POST'])
def user_info(user_id):
return 'the num is %d' % user_id
响应:
# 生成json数据响应体
@app.route('/demo4')
def demo4():
json_dict = {
"user_id": 10,
"user_name": "laowang"
}
return jsonify(json_dict)
# 路由传递参数string
@app.route('/user/<int:user_id>')
def user_info(user_id):
return 'hello %d' % user_id
# 重定向redirect(url_for(‘’,参))
@app.route('/demo5')
def demo5():
# 使用 url_for 生成指定视图函数所对应的 url
return redirect(url_for('user_info', user_id=100))
# 渲染响应render_response(‘’,name=name)
转换器:
一.系统自带转换器
DEFAULT_CONVERTERS = {
'default': UnicodeConverter,
'string': UnicodeConverter,
'any': AnyConverter,
'path': PathConverter,
'int': IntegerConverter,
'float': FloatConverter,
'uuid': UUIDConverter,
}
二.自定义转换器
from flask import Flas
k#导入基类转换器
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# 1.自定义类,继承自BaseConverter
class MyRegexConverter(BaseConverter):
# 2.编写初始化方法, init方法, 接收两个参数, url_map, regex, 并初始化父类空间和子类空间
def __init__(self,url_map,regex):
super(MyRegexConverter, self).__init__(url_map)
self.regex = regex
# 3.将自定义转换器类,添加到默认的转换列表中
app.url_map.converters['re'] = MyRegexConverter
#使用自定义转换器#接收3位整数
@app.route('/<re("\d{3}"):num>')
def hello_world(num):
print("num = %s"%num)
return "the num is %s"%num
#接收一个手机号
@app.route('/<re("1[345678]\d{9}"):mobile>')
def get_phone_number(mobile):
return "the mobile is %s"%mobile
if __name__ == '__main__':
app.run()
异常捕获:
from flask import Flask,abort
app = Flask(__name__)
@app.route('/game/<int:age>')
def play_game(age):
#异常抛出
abort(404)
return "helloworld"
#异常捕获
@app.errorhandler(404)
def page_not_found(e):
print(e)
return "找不到服务器资源,服务器搬家了"
if __name__ == '__main__':
app.run()
钩子:
请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:
# 在第一次请求之前调用,可以在此方法内部做一些初始化操作
@app.before_first_request
def before_first_request():
print("before_first_request")
# 在每次请求之前调用,直接return之后那么就不会执行视图函数
@app.before_request
def before_request():
print("before_request")
# 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理
@app.after_request
def after_request(response):
print("after_request")
response.headers["Content-Type"] = "application/json"
return response
# 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息
@app.teardown_request
def teardown_request(e):
print("teardown_request")
Request:
|
属性 |
说明 |
类型 |
|
data |
记录请求的数据,并转换为字符串 |
* |
|
form |
记录请求中的表单数据 |
MultiDict |
|
args |
记录请求中的查询参数 |
MultiDict |
|
cookies |
记录请求中的cookie信息 |
Dict |
|
headers |
记录请求中的报文头 |
EnvironHeaders |
|
method |
记录请求使用的HTTP方法 |
GET/POST |
|
url |
记录请求的URL地址 |
string |
|
files |
记录请求上传的文件 |
* |
python-Web-flask-路由和视图的更多相关文章
- Python Web Flask源码解读(二)——路由原理
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- flask路由和视图和cookie
什么是路由 """ 客户端(例如web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例. 程序实例需要知道对每个URL请求运行那些代码,所以 ...
- python web -- flask
Flask是一个简洁的 Python_web 框架. 零. virtualenv 虚拟环境配置. $ easy_install pip $ pip install virtualenv $ virtu ...
- Python Web Flask源码解读(一)——启动流程
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- flask 路由和视图
路由设置的俩种方式 @app.route('/xxx') def index(): return 'index' ------------------------------------------ ...
- Python Web Flask源码解读(三)——模板渲染过程
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- Python Web Flask源码解读(四)——全局变量
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- web应用/路由控制/视图函数/单表多表操作
一. 1.wen应用:BS架构的应用程序,B是浏览器,S:server(实现了wsgi协议)+ application https://www.cnblogs.com/liuqingzheng/art ...
- [Python web开发] 路由实现 (三)
一.路由 1.1 什么是路由 简单说,就是路怎么走.就是按照不同的路径分发数据. URL就是不同资源的路径,不同路径应该对应不同的应用程序来处理. 所以,代码中要增加对路径的分支处理. 一个简单的路由 ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...
随机推荐
- spring-JDBC配置,使用,一些报错,mybatis原理,优化
一. 配置spring的jdbc的pom.xml遇到报错 missing artifactXXXXX. 修改dependency的版本如下 <dependency> <groupId ...
- ASP.NET MVC Liu_Cabbage 个人博客
RightControl_Blog 介绍 前台使用燕十三博客前端模板,后台基于RightControl .NET通用角色权限管理系统搭建,已完成.项目地址:http://www.baocaige.to ...
- Java8-Lock-No.03
import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import ...
- C# 可观察集合
static void Main() { var data = new ObservableCollection<string>(); data.CollectionChanged += ...
- win10 UWP 等级控件Building a UWP Rating Control using XAML and the Composition API | XAML Brewer, by Diederik Krols
原文:Building a UWP Rating Control using XAML and the Composition API | XAML Brewer, by Diederik Krols ...
- P5312 [Ynoi2011]D2T1
思路:01trie 按位维护 提交:5边 错因:爆int + 少处理询问时的右端点 题解: 见代码(已经不想说什么了) 代码 //I have my own flg; #include<bits ...
- 004——转载C#禁止改变窗体大小
原文链接:http://www.cnblogs.com/shaozhuyong/p/5545005.html 1.先把MaximizeBox和MinimumBox设置为false,这时你发现最大最小化 ...
- 51 Nod 1700 首尾排序法
1700 首尾排序法 有一个长度为n的数组 p1, p2, p3, ⋯, pnp1, p2, p3, ⋯, pn ,里面只包含1到n的整数,且每个数字都不一样.现在要对这个数组进行从小到大排序,排序的 ...
- 【csp模拟赛6】树上统计-启发式合并,线段树合并
30%:暴力 40%:枚举L,R从L~n枚举,R每增大一个,更新需要的边(bfs实现)60%:枚举每条边, 计算每条边的贡献另外20%的数据:枚举每条边,计算每条边的贡献100%:对于每一条边统计 有 ...
- python3安装web.py
今天准备测试代理池IPProxyPool获取到ip的质量,在安装web.py的时候遇到了些问题,在此记录一下. 1.安装资料 web.py官网:http://webpy.org/ web.py的git ...