【flask快速上手(一)】

目录

flask快速上手(一)

路由

现代 web 应用都使用有意义的 URL ,这样有助于用户记忆,网页会更得到用户的青睐, 提高回头率。

在 Flask 中,可以使用 @app.route 装饰器来定义路由。例如:

复制代码
@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello, World'

变量规则

通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用 converter:variable_name ,可以选择性的加上一个转换器,为变量指定规则。请看下面的例子:

复制代码
@app.route('/user/<username>')
def show_user_profile(username):
    # 显示给的用户名
    return 'User %s' % escape(username)
上面的代码定义了一个带有变量规则的路由,当用户访问 /user/john 时,username 将会被赋值为 'john',然后传递给 show_user_profile 视图函数

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # 显示给的id,这个id是一个整形
    return 'Post %d' % post_id

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    # 显示/path下面的子路径
    return 'Subpath %s' % escape(subpath)

转换器支持的类型有

类型 含义
string (缺省值) 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 类似 string ,但可以包含斜杠
uuid 接受 UUID 字符串

唯一的 URL

以下两条规则的不同之处在于是否使用尾部的斜杠。:

复制代码
@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

projects 的 URL 是中规中矩的,尾部有一个斜杠,看起来就如同一个文件夹。 访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。

about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。如果访问这个 URL 时添加了尾部斜杠就会得到一个 404 错误。这样可以保持 URL 唯一,并帮助 搜索引擎避免重复索引同一页面。

URL 构建(url_for)

Flask 提供了 url_for 函数来帮助构建 URL,它接受视图函数的名称作为参数,并返回该视图函数对应的 URL。这样做的好处是,如果你在应用程序中更改了 URL 结构,使用 url_for 的地方不需要修改。例如:

复制代码
from flask import url_for

@app.route('/')
def index():
    return 'Hello, World!'

@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username
# 在某个视图函数中使用 url_for
user_url = url_for('show_user_profile', username='john')

上面的代码中,url_for('show_user_profile', username='john') 返回了 /user/john 这个 URL。

HTTP 方法

Web 应用使用不同的 HTTP 方法处理 URL 。当你使用 Flask 时,应当熟悉 HTTP 方法。 缺省情况下,一个路由只回应 GET 请求。 可以使用 route() 装饰器的 methods 参数来处理不同的 HTTP 方法:

复制代码
from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return do_the_login()
    else:
        return show_the_login_form()

如果当前使用了 GET 方法, Flask 会自动添加 HEAD 方法支持,并且同时还会 按照 HTTP RFC 来处理 HEAD 请求。同样, OPTIONS 也会自动实现。

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

  • HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
  • HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
相关推荐
寻月隐君9 分钟前
不止于后端:Rust 在 Web 开发中的崛起之路 (2024数据解读)
后端·rust·github
程序员岳焱9 分钟前
MySQL 基础 SQL 优化秘籍:4 大技巧让查询性能飙升!
后端·mysql·性能优化
Super Rookie28 分钟前
Spring Cloud 企业项目技术选型
后端·spring·spring cloud
Deng9452013144 小时前
基于Python的职位画像系统设计与实现
开发语言·python·文本分析·自然语言处理nlp·scrapy框架·gensim应用
程序员爱钓鱼4 小时前
限流、控并发、减GC!一文搞懂Go项目资源优化的正确姿势
后端·google·go
FreakStudio8 小时前
一文速通 Python 并行计算:13 Python 异步编程-基本概念与事件循环和回调机制
python·pycharm·协程·多进程·并行计算·异步编程
姑苏洛言9 小时前
编写产品需求文档:黄历日历小程序
前端·javascript·后端
姑苏洛言10 小时前
搭建一款结合传统黄历功能的日历小程序
前端·javascript·后端
你的人类朋友10 小时前
🍃认识一下boomi
后端
苏三说技术10 小时前
MySQL的三大日志
后端