Python Flask:路由

来自CloudWiki
跳转至: 导航搜索

定义

处理URL和函数之间关系的程序 称为路由,

而这个函数称为视图函数。

Flask中使用路由

使用程序实例提供的app.route装饰器,

把装饰的函数注册为路由:

from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello_world():
    return '你好'

if __name__ == '__main__':
    #app.debug = True
    app.run()

当浏览器访问 http://127.0.0.1:5000/hello 时,URL会触发hello_world()函数,执行函数体中的代码。

给URL添加变量

from flask import Flask
app = Flask(__name__)

@app.route('/user/<username>') #添加字符串变量,默认
def show_user_profile(username):
    return 'User: %s' % username

@app.route('/post/<int:post_id>')#添加整形变量
def show_post(post_id):
    return 'Post ID: %d' % post_id

@app.route('/rev/<float:revNo>')#添加浮点数变量
def revision(revNo):
   return 'Revision Number %f' % revNo

if __name__ == '__main__':
    #app.debug = True
    app.run()


访问http://127.0.0.1:5000/user/张三 时就会触发show_use_profile函数

访问http://127.0.0.1:5000/post/123 时就会触发show_post函数

show_post()函数使用了转换器,它有下面几种类型:

  • Int
  • float
  • path

代码中使用int:post_id将其设置为整形

指定多个参数: https://www.cnpython.com/qa/1371656

为视图绑定多个URL

一个视图可以绑定多个URL,

from flask import Flask
app = Flask(__name__)

@app.route('/')
@app.route('/index')
def index():
    return "Welcome to Flask"

if __name__ == '__main__':
    app.run()

访问 http://127.0.0.1:5000/index 和http://127.0.0.1:5000/ 都可以访问网页

构建URL

Flask除了能够匹配URL ,还能生成URL,

Flask可以用url_for()来给指定的函数构造URL.

 
from flask import Flask,url_for
app = Flask(__name__)

@app.route('/user/<username>')
def show_user_profile(username):
    # 显示该用户名的用户信息
    return 'User: %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # 根据ID显示文章,ID是整型数据
    return 'Post ID: %d' % post_id

@app.route('/url/')
def redirect_to_url():
    # 跳转到show_post()视图函数
    print(url_for('show_post', post_id=10))
    return url_for('show_post', post_id=10)

if __name__ == '__main__':
    app.run()

HTTP方法

默认情况下,路由只回应GET请求

但是通过route()装饰器 传递methods参数可以改变这个行为。

@app.route('/login',methods=['GET','POST'])
  • GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
  • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
  • PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
  • HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
  • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
  • OPTIONS:查询相应URI支持的HTTP方法。