python2.7的flask框架之构造 URL&了解HTTP 方法

我们都知道,Flask 能匹配 URL,接下来,我们就来尝用 url_for() 来给指定的函数构造 URL。这个函数呢,接受函数名作为第一个参数,也接受对应 URL 规则的变量部分的命名参数。未知变量部分会添加到 URL 末尾作为查询参数。我们来看一些实例感受下:

>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> @app.route('/')
... def index(): pass
...
>>> @app.route('/login')
... def login(): pass
...
>>> @app.route('/user/<username>')
... def profile(username): pass
...
>>> with app.test_request_context():
...  print url_for('index')
...  print url_for('login')
...  print url_for('login', next='/')
...  print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe

 上述实例中有的应用到了test_request_context()方法,咱们详细的之后再说,现在来看下构建URL的好处:

  1. 反向构建通常比硬编码的描述性更好。更重要的是,它允许你一次性修改 URL, 而不是到处边找边改。
  2. URL 构建会转义特殊字符和 Unicode 数据,免去你很多麻烦。
  3. 如果你的应用不位于 URL 的根路径(比如,在 /myapplication 下,而不是 / ), url_for() 会妥善处理这个问题。

完事我们来看下http方法。我们知道,HTTP (与 Web 应用会话的协议)有许多不同的访问 URL 方法。默认情况下,路由只回应 GET 请求,但是通过 route()装饰器传递 methods 参数可以改变这个行为。来看一下实例:

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

如果存在 GET ,那么flask会替我们自动地添加 HEAD,无需干预。它会确保遵照HTTP RFC(描述 HTTP 协议的文档)处理 HEAD 请求,所以我们可以完全忽略这部分的 HTTP 规范。同样,自从 Flask 0.6 起, 也实现了 OPTIONS 的自动处理。 

我们来看下常用的HTTP 方法:

GET

浏览器告知服务器:只 获取 页面上的信息并发给我。这是最常用的方法。

HEAD

浏览器告诉服务器:欲获取信息,但是只关心 消息头 。应用应像处理 GET 请求一样来处理它,但是不分发实际内容。在 Flask 中你完全无需 人工 干预,底层的 Werkzeug 库已经替你打点好了。

POST

浏览器告诉服务器:想在 URL 上 发布 新信息。并且,服务器必须确保 数据已存储且仅存储一次。这是 HTML 表单通常发送数据到服务器的方法。

PUT

类似 POST 但是服务器可能触发了存储过程多次,多次覆盖掉旧值。你可 能会问这有什么用,当然这是有原因的。考虑到传输中连接可能会丢失,在 这种 情况下浏览器和服务器之间的系统可能安全地第二次接收请求,而 不破坏其它东西。因为 POST 它只触发一次,所以用 POST 是不可能的。

DELETE

删除给定位置的信息。

OPTIONS

给客户端提供一个敏捷的途径来弄清这个 URL 支持哪些 HTTP 方法。 从 Flask 0.6 开始,实现了自动处理。

比较有趣的是,在 HTML4 和 XHTML1 中,表单只能以 GET 和 POST 方法提交到服务器。但是 JavaScript 和未来的 HTML 标准允许你使用其它所有的方法。此外,HTTP 最近变得相当流行,浏览器不再是唯一的 HTTP 客户端。比如,许多版本控制系统就在使用 HTTP。 

好啦,本次记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Flask是一个轻量级的Python Web框架,它的设计常简单,用来快速开发小型的Web应用程序。Flask使用Werkzeug WSGI工具库和Jinja2模板引擎。 在底层,Flask使用Werkzeug作为其WSGI服务器。Werkzeug是一个用于Web服务开发的Python库,它包含了一个用于处理HTTP请求的 WSGI服务器、一个用于调试的Web服务器、以及一些其他用于Web开发的工具。 Jinja2是一个用于生成HTML、XML或其他文本文件的模板引擎。它可以用于在Web应用程序中渲染动态内容,并且具有许多用于控制模板行为的强大功能。 总的来说,Flask是一个用于快速开发Web应用程序的轻量级Python框架,它依赖于Werkzeug和Jinja2库来提供其底层功能。 ### 回答2: Python Flask框架是一个轻量级的web应用开发框架,适合构建小型和中型的web应用程序。我对Python Flask框架有一定的了解。 首先,Python Flask框架是基于Werkzeug和Jinja2两个库构建的。Werkzeug是一个WSGI(Web服务器网关接口)工具库,它帮助处理HTTP请求和响应的底层细节,而Jinja2是一个模板引擎,用于构建动态的web页面。 在Python Flask框架中,可以创建视图函数,用于处理Web应用的不同URL请求。这些视图函数可以返回HTML页面、JSON数据等不同类型的响应。 此外,Python Flask框架也支持路由功能,可以将不同的URL映射到相应的视图函数上。这样,当用户访问特定的URL时,框架调用相应的视图函数进行处理。 在Flask框架中,还可以使用装饰器来定义路由和URL终点。装饰器是一个修饰函数的特殊语法,它可以让代码更加简洁和易读。 此外,Python Flask框架还支持许多其他功能,例如表单处理、用户认证、数据库集成等。可以使用扩展库来增加这些功能,例如Flask-Login、Flask-WTF、Flask-SQLAlchemy等。 总结起来,我对Python Flask框架有一定的了解。我知道它是一个轻量级的Web应用框架,基于Werkzeug和Jinja2库构建。我也知道它可以用于处理HTTP请求和响应、创建视图函数和路由、使用装饰器等。此外,我还了解到它支持扩展库来增加额外的功能,如表单处理和用户认证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

luyaran

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

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

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

打赏作者

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

抵扣说明:

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

余额充值