四时宝库

程序员的知识宝库

Flask——应用的基本结构(一)(flask例子)

初始化

所有Flask应用都必须创建一个应用实例,应用实例是Flask类的对象,通常由下述代码创建:

from flask import Flask 
app = Flask(_ _name_ _)# __name__ 参数必填

路由和视图函数

1、路由:客户端把请求发送给Web服务器,Web服务器再把请求发送给Flask应用实例。应用实例需要知道每个URL的请求要运行哪些代码,所以保存了一个URL到Python函数的映射关系,处理URL与函数之间关系的程序称为路由

2、视图函数:在Flask应用中定义路由使用应用实例提供的 app.route 装饰器,下面的列子说明了如何声明路由:

@app.route('/') 
def index(): 
			return "<h1> Hello World!<h1/>"
  • 像index()这样处理入站请求的函数称为视图函数,这个函数的返回值称为响应,是客户端接收到的内容。
  • 动态路由,在日常服务中所使用的URL有很多地址是可变的,比如,Facebook资料页面的地址是http://www.facebook.com/<your-name>,Flask支持这种形式的URL,需要在 app.route 装饰器中使用特殊语法就可以:
@app.route('/user/<name>') 
def user(name):
			return "<h1> Hello, {}!</h1>".formate(name)
  • 此时,Flask会将name作为参数传入函数,name参数用于生成个性化欢迎消息;路由的动态部分默认使用字符串,不过也可以是其他类型,Flask支持使用string、int、float和path类型。

URL与视图函数的映射

1、传递参数

传递参数的语法是: '/<参数名>/',然后视图函数中,也要定义同名参数

2、参数数据类型

  • 如果没有指定其他数据类型,那么默认就是使用 string 数据类型
  • int 数据类型只能传递 整数
  • float 数据类型只能传递 小数
  • path 数据类型可以接收任意的字符串,也可以接收路径也就是包含/\的字符串
  • uuid 数据类型只能接收uuid 字符串,是一个全宇宙唯一的字符串,一般可以用来做表的主键
  • any 数据类型可以在一个 url 中指定多个路径,例如:
@app.route("/<any(bolg,user):url_path>/<id>/") 
def detail(url_path,id): 
 if url_path == "bolg": 
 			return "博客详情 %s" % id 
 else: 
 			return "用户详情 %s" % id

3、自定义URL转换器

自定义方式:

  • 实现一个类,集成子 BaseConverter
  • 在自定义的类中重写 regex ,也就是这个变量的正则表达式
  • 将自定义的类,映射到 app_url_map.converters 上,比如:
from werkzeug.routing 
import BaseConverter class TelephoneConveter(BaseConverter): regex = r'1[85734]\d{9}'# 正则表达式 app.url_map.converters["tel"] = TelephoneConveter

接收用户传递的参数

  • 第一种,使用path形式(将参数嵌入到路径中)
  • 第二种,使用查询字符串的方式,就是?key=value的形式传递;多参数使用&字符连接;
from flask import request 
@app.route("/d/") 
def d(wd): 
			wd = request.args.get("wd") 
			return “您通过查询字符串的方式传递的参数 %s”% wd
  • 如果这个页面想要做优化,就是被搜索引擎搜索到,推荐使用第一种形式(path形式);如果不在乎搜索引擎优化,那么就可以使用第二种(查询字符串)

一个完整的应用

示例中定义了一个应用实例一个路由一个视图函数

示例2-1 hello.py 一个完整的Flask应用

from flask import Flask 
app = Flask(__name__) #应用实例

@app.route("/<name>") #路由/参数
def index(name): #视图函数
			return "Hello,%s" % name

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接