【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 方法的补充,用来对已知资源进行局部更新 。
相关推荐
期待のcode4 分钟前
Spring框架1—Spring的IOC核心技术1
java·后端·spring·架构
Pocker_Spades_A5 分钟前
Python快速入门专业版(二十三):for循环基础:遍历字符串、列表与range()函数(计数案例)
python
闲人编程8 分钟前
图像去雾算法:从物理模型到深度学习实现
图像处理·人工智能·python·深度学习·算法·计算机视觉·去雾
Livingbody1 小时前
10分钟完成 ERNIE-4.5-21B-A3B-Thinking深度思考模型部署
后端
Kyln.Wu2 小时前
【python实用小脚本-211】[硬件互联] 桌面壁纸×Python梦幻联动|用10行代码实现“开机盲盒”自动化改造实录(建议收藏)
开发语言·python·自动化
Ms_Big2 小时前
ppliteseg改rknn,部署在嵌入式板,加速模型
人工智能·python·深度学习
胡萝卜的兔2 小时前
go 日志的分装和使用 Zap + lumberjack
开发语言·后端·golang
折翼的恶魔3 小时前
数据分析:合并
python·数据分析·pandas
en-route3 小时前
如何在 Spring Boot 中指定不同的配置文件?
java·spring boot·后端
百锦再3 小时前
在 CentOS 系统上实现定时执行 Python 邮件发送任务
java·linux·开发语言·人工智能·python·centos·pygame