Flask学习之旅——1.3 URL与视图(二)

本文详细介绍了Flask框架中URL与视图的概念和使用,包括如何使用url_for()构造URL,以及指定URL末尾斜杠和HTTP方法。示例中展示了如何定义路由并支持GET和POST请求。同时,对比了GET和POST请求的区别,如数据可见性、安全性和长度限制等。
摘要由CSDN通过智能技术生成

Flask学习之旅——1.3 URL与视图(二)

前言

构造URL(url_for函数)

目的:通过函数名去获得对应的URL,避免因修改了一处URL而导致大面积修改的情况发生。

url_for()语法:

  • url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数
  • url_for( “ 视图函数名 ” , 查询参数··· )

使用原因:

  • 当修改了URL,但没有修改该URL对应的函数名时,url_for()函数会帮我们自动替换新的URL
  • url_for()函数会转义一些特殊字符和unicode字符串,这些事情url_for会自动的帮我们搞定。

示例

from flask import Flask,url_for  ###使用url_for()函数前需要先引入url_for库
app = Flask(__name__)

@app.route('/article/<id>/')
def article(id):
    return '%s article detail' % id

@app.route('/')
def index(request):
    print(url_for("article",id=1))   ###url_for()函数的使用
    return "首页"

运行结果:在访问index的时候,会打印出/article/1/

指定URL末尾的斜杠

  • URL的末尾有斜杠没有斜杠是不同的URL
  • 当访问一个结尾不带斜线的URL/article,会被重定向到带斜线的URL/article/上去。
  • 但访问一个结尾带斜线的URL/article/,不会被重定向到不带斜线的URL/article上去,页面会返回404信息。

指定HTTP方法(关键字methods

  • 通过关键字参数methods指定用户访问HTTP时使用GET或者POST方法
  • @app.route()中可以传入一个关键字参数methods来指定本方法支持的HTTP方法
  • 默认情况下,只能使用GET请求

例子:

@app.route('/login/',methods=['GET','POST'])
def login():
    return 'login'

loginURL既能支持GET又能支持POST

GET请求和POST请求分别在什么时候使用?

  • 如果只是需要从服务器上获取数据,一般都是用GET请求。
  • 如果前端需要把数据发送给服务器,一般用POST请求

补充:比较 GET 与 POST

GETPOST
后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签可收藏为书签不可收藏为书签
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史参数保留在浏览器历史中。参数不会保存在浏览器历史中。
对数据长度的限制当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。无限制。
对数据类型的限制只允许 ASCII 字符。没有限制。也允许二进制数据。
安全性与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性数据在 URL 中对所有人都是可见的。数据不会显示在 URL 中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来程序猿小吕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值