Flask是python的网络框架,我把每天学习的知识点分散的写在这里
- Flask 代码的基本架构
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "hello world" if __name__ = "__main__": app.run()
- 路由route的知识
- '/'与下面def的关系是相映射的,就是在'/'下要执行函数hello(),并返回相应的结果
- 为了给 URL 增加变量的部分,你需要把一些特定的字段标记成<variable_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 %d' % post_id
- 构建URL
- 这里不得不提到url_for()函数,这个函数可以针对一个特定的函数构建一个 URL它能够接受函数名作为第一参数,以及一些关键字参数, 每一个关键字参数对应于 URL 规则的变量部分。未知变量部分被插入到 URL 中作为查询参数(query string),下面有个例子
>>> 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
刚开始写代码时,我们会在模板里直写出完事的URL来,有了url_for()就完全可以不用那么做
反向构建通常比硬编码更具备描述性。更重要的是,它允许你一次性修改 URL,而不是到处找 URL 修改。
构建 URL 能够显式地处理特殊字符和 Unicode 转义,因此你不必去处理这些。
如果你的应用不在 URL 根目录下(比如,在/myapplication
而不在/), url_for() 将会适当地替你处理好。-
HTTP方法
这是网络上每天都在无数次进行的交互方法,会到html,xml等格式的文本语言,也会涉及到后端的组织语文,如python ,php等
HTTP (也就说 web 应用协议)有不同的方法来访问 URLs。默认情况下,路由只会响应GET请求,但是能够通过给 route()装饰器提供methods参数来改变@app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': do_the_login() else: show_the_login_form()
如果使用GET方法,HEAD(以后学写爬虫时会学习到的)方法将会自动添加进来(暂时先不用理会,知道有这么回事就OK了)。你不必处理它们也能确保HEAD请求会按照 HTTP RFC (文档在 HTTP 协议里面描述) 要求来处理, 因此你完全可以忽略这部分 HTTP 规范。同样地,自从 Flask 0.6 后,OPTIONS也能自动为你处理。
也许你并不清楚 HTTP 方法是什么?别担心,这里有一个 HTTP 方法的快速入门以及为什么它们重要:GET
浏览器通知服务器只 获取 页面上的信息并且发送回来。这可能是最常用的方法。HEAD
浏览器告诉服务器获取信息,但是只对 头信息 感兴趣,不需要整个页面的内容。应用应该处理起来像接收到一个GET请求但是不传递实际内容。在 Flask 中你完全不需要处理它,底层的 Werkzeug 库会为你处理的。POST
浏览器通知服务器它要在 URL 上 提交 一些信息,服务器必须保证数据被存储且只存储一次。这是 HTML 表单通常发送数据到服务器的方法PUT
同 POST 类似,但是服务器可能触发了多次存储过程,多次覆盖掉旧值。现在你就会问这有什么用, 有许多理由需要如此去做。考虑下在传输过程中连接丢失:在这种情况下浏览器 和服务器之间的系统可能安全地第二次接收请求,而不破坏其它东西。对于 POST 是不可能实现的,因为 它只会被触发一次。DELETE
移除给定位置的信息OPTIONS
给客户端提供一个快速的途径来指出这个 URL 支持哪些 HTTP 方法。从 Flask 0.6 开始,自动实现了它
现在对于我来说,只要弄懂GET和POST的原理与应用 就OK了~~