Python网络编程 路由
路由是将URL直接映射到创建网页的代码中的机制。 它有助于更好地管理网页的结构,并大大增加网站的性能,进一步增强或修改变得非常简单。在Python中,路由是在大多数网络框架工程中实现的。在本章中,我们将看到 flask 网络框架的例子。
Flask中的路由
Flask中的 路由() 装饰器被用来将URL绑定到一个函数上。因此,当在浏览器中提到该URL时,该函数会被执行以得到结果。 这里,URL ‘/hello’ 规则被绑定到 hello_world() 函数。因此,如果用户访问 http://localhost:5000/ URL, hello_world() 函数的输出就会在浏览器中呈现。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello Tutorialspoint'
if __name__ == '__main__':
app.run()
当我们运行上述程序时,我们得到以下输出 −
* Serving Flask app "flask_route" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [06/Aug/2018 08:48:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [06/Aug/2018 08:48:46] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [06/Aug/2018 08:48:46] "GET /favicon.ico HTTP/1.1" 404 -
我们打开浏览器并指向URL http://localhost:5000/,以 看到函数被执行的结果。
使用URL变量
我们可以使用路由来传递URL变量,以便在飞行中建立URLS。为此,我们使用url_for()函数,它接受函数的名称作为第一个参数,其余的参数作为URL规则的变量部分。
在下面的例子中,我们将函数名称作为参数传递给url_for函数,并在这些行被执行时打印出结果。
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
@app.route('/login')
def login(): pass
@app.route('/user/')
def profile(username): pass
with app.test_request_context():
print url_for('index')
print url_for('index', _external=True)
print url_for('login')
print url_for('login', next='/')
print url_for('profile', username='Tutorials Point')
When we run the above program, we get the following output −
/
http://localhost/
/login
/login?next=%2F
/user/Tutorials%20Point
重定向
我们可以使用重定向函数,使用路由将用户重定向到另一个URL。我们提到新的URL作为函数的返回值,它应该重定向给用户。当我们在修改一个现有的网页时,将用户暂时转移到一个不同的页面,这很有帮助。
from flask import Flask, abort, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
# this_is_never_executed()
当上述代码被执行时,基本的URL会转到登录页面,该页面使用了中止函数,这样登录页面的代码就不会被执行。