python框架之Flask基础篇(一)
一.第一个hello world程序
# coding=utf-8
from flask import Flask app = Flask(__name__) @app.route('/')
def hello_world():
return 'Hello World!' if __name__ == '__main__':
app.run(debug=True)
1.app参数的设置:
以下几种方式全部拿debug模式举例:
.方式一:将参数设置到app.config字典中:
app.config["DEBUG"] = True
.方式二:加载文件:
1. 先在根目录下创建一个config.py文件,然后写入DEBUG = True
2. 然后在含有app文件中设置参数:
app.config.from_pyfile("config.py")
.方式三:加载对象(实际开发中一般用这个):
1. 先在根目录下创建一个config.py文件,然后写入如下代码:
class Config(object):
DEBUG = True
2. 在app文件中导入config文件中的Config类。
3. 然后设置:
app.config.from_object("Config")
.方式四:app的属性
app.debug = True
也可以
app.run(debug=True)
但是这种方式不同用,只是针对debug模式可以这样设置。
2.取app.config参数中的值:
1)app.config.get("DEBUG")
2)current_app.config.get("DEBUG")
3)Config.DEBUG
二.路由的各种定义方式
1.路由的查找方式:
2.flask中内置的路由转换器(路由传参的几种形式)
a.系统默认的类型default就是string类型,也就是说进行路由的参数匹配的时候,系统默认会将参数当作string类型进行匹配。下面举例说明:
@app.route('/<str>')
def print_str(str):
print type(str) # 结果为:<type 'unicode'>
return str @app.route('/<string:str>')
def print_str1(str):
print type(str) # 结果为:<type 'unicode'>
10 return str
@app.route('/<any(hello,python,java,"javascript:;"):str>')
def print_any(str): # 只能匹配括号里面的数据,并且引号里面的数据可以随意写
print type(str)
return str @app.route('/<path:str>') # http://localhost:5000/path/str
def print_path(str):
print type(str)
return str # 结果为:path/str @app.route('/<int:str>') # 页面传过来的数据(字符串类型)在这里直接转换为int类型
def print_int(str):
print type(str) # <type 'int'>
return str(str) # 此时将数据返回给页面的时候必须转换为字符串类型 @app.route('/<float:str>') # 只有当页面传递过来的是小数float转换器才起作用
def print_float1(str):
print type(str) # <type 'float'>
return str(str)
b. uuid是32位16进制的数字。
3.路由的重定向
1)重定向的方法是redirect()常常和url_for一起使用。比如:redirect(url_for(“视图函数的方法名”))
4.返回Json数据的两种方法:
1)json.dumps("字典")
2)jsonify("字典")
第一种方法仅仅是将字典转换为字符串返回给页面,响应头的Content-Type为text/html。
第二种方法是将字典转换为json返回给页面,响应头的Content-Type为application/json。这是开发中比较常用的方法。
现在的需求是用第一种方法还要达到第二种方法的效果,代码为:
return json.dumps(“字典”), , {'Content-Type': 'application/json'}
5.自定义正则路由转换器
1)导入包
from werkzeug.routing import BaseConverter
2)仿照BaseConverter自定义一个类
class RegexConverter(BaseConverter):
def __init__(self,url_map,*args):
super(RegexConverter,self).__init__(url_map)
self.regex = args[]
3)将自定义的类添加到路由转换器的字典中
app.url_map.converters["re"] = RegexConverter # 这句话相当于将自己定义的类用re来表示
4)将正则路由转换器应用到实例中
@app.route('/<re(r"\d{2}"):str>') # 只能匹配两位数字 re(“正则”) ===> 相当于执行了RegexConverter中的init方法,将正则赋值给self.regex
def print_str(str):
return str
python框架之Flask基础篇(一)的更多相关文章
- python框架之Flask基础篇(二)-------- 数据库的操作
1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config[&q ...
- python框架之Flask基础篇(三)-------- 模版的操作
1.flask特有的变量和函数: 变量:g.session.request.config 函数:url_for().get_flashed_messages()这个函数注意了啊,记住这是个函数,别忘了 ...
- python框架之Flask基础篇(四)-------- 其他操作
1.蓝图 要用蓝图管理项目,需要导入的包是:from flask import Buleprint 具体大致分为三步: 1.先在子模块中导入蓝图包,然后再创建蓝图对象. 2.然后将子模块中的视图函数存 ...
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
- 智普教育Python视频教程之入门基础篇,python笔记
智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostna ...
- Python(三)基础篇之「模块&面向对象编程」
[笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Python(四)基础篇之「文件对象&错误处理」
[笔记]Python(四)基础篇之「文件对象&错误处理」 2016-12-08 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- 第一篇 Flask基础篇之(配置文件,路由系统,模板,请求响应,session&cookie)
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...
- python框架之Flask
介绍:Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . WSGl:Web Server Gateway ...
随机推荐
- Uva12657 Boxes in a Line
题目链接:传送门 分析:每次操作都会花费大量时间,显然我们只需要关注每个元素的左边是啥,右边是啥就够了,那么用双向链表,l[i]表示i左边的数,r[i]表示i右边的数,每次操作模拟一下数组的变化就好了 ...
- bzoj 1664 (贪心)
[Usaco2006 Open]County Fair Events 参加节日庆祝 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 487 Solved: ...
- NOIP1999 邮票面值设计
题目描述 Description 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之 ...
- codevs 1296 营业额统计 (splay 点操作)
题目大意 每次加入一个值,并且询问之前加入的数中与该数相差最小的值. 答案输出所有相差值的总和. 解题分析 = = 参考程序 #include <bits/stdc++.h> using ...
- nyoj_600_花儿朵朵_201404162000
花儿朵朵 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 春天到了,花儿朵朵盛开,hrdv是一座大花园的主人,在他的花园里种着许多种鲜花,每当这个时候,就会有一大群游 ...
- 又通过一道题目,替换字符串 —— 剑指Offer
https://www.nowcoder.net/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&tPage= ...
- PS和AI软件差别
首先.PS是处理位图图像的.AI是处理矢量图图形的.那就先说一下两者最主要的问题,位图与矢量图的差别和优缺点. 在计算机画图领域中.依据成图原理和绘制方法的不同.数字图形.图像分为"矢量图 ...
- 1. 数组之差TapeEquilibrium Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|.
数组之差 package com.code; public class Test03_3 { public static int solution(int[] A) { int size = A.le ...
- sql 分组取每组的前n条或每组的n%(百分之n)的数据
sql 分组取每组的前n条或每组的n%(百分之n)的数据 sql keyword: SELECT * ,ROW_NUMBER() OVER(partition by b.UserID order by ...
- 从头认识Spring-1.9 内部类注入Bean
这一章节我们来讨论一下内部类注入Bean. 1.domain 蛋糕类:(跟前一章节的一样) package com.raylee.my_new_spring.my_new_spring.ch01.to ...