Python - Định tuyến

Định tuyến là cơ chế ánh xạ URL trực tiếp với mã tạo ra trang web. Nó giúp quản lý tốt hơn cấu trúc của trang web và tăng hiệu suất của trang web một cách đáng kể và những cải tiến hoặc sửa đổi hơn nữa trở nên thực sự dễ dàng. Trong định tuyến python được thực hiện trong hầu hết các hoạt động của khung web. Chúng ta sẽ xem các ví dụ từflask khung web trong chương này.

Định tuyến trong Flask

Các route()decorator trong Flask được sử dụng để liên kết URL với một hàm. Kết quả là khi URL được đề cập trong trình duyệt, hàm được thực thi để đưa ra kết quả. Đây, URL'/hello' quy tắc bị ràng buộc với hello_world()chức năng. Do đó, nếu người dùng truy cậphttp://localhost:5000/ URL, đầu ra của hello_world() chức năng sẽ được hiển thị trong trình duyệt.

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
   return 'Hello Tutorialspoint'
if __name__ == '__main__':
   app.run()

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

* 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 -

Chúng tôi mở trình duyệt và trỏ đến URL http://localhost:5000/ để xem kết quả của hàm đang được thực thi.

Sử dụng các biến URL

Chúng tôi có thể chuyển các biến URL bằng cách sử dụng tuyến đường để tạo URL một cách nhanh chóng. Đối với điều này, chúng tôi sử dụng hàm url_for () chấp nhận tên của hàm làm đối số đầu tiên và phần còn lại của các đối số như một phần biến của quy tắc URL.

Trong ví dụ dưới đây, chúng tôi chuyển tên hàm làm đối số cho hàm url_for và in ra kết quả khi các dòng đó được thực thi.

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') 
      

Khi chúng tôi chạy chương trình trên, chúng tôi nhận được kết quả sau:

/
http://localhost/
/login
/login?next=%2F
/user/Tutorials%20Point

Chuyển hướng

Chúng tôi có thể sử dụng chức năng chuyển hướng để chuyển hướng người dùng đến một URL khác bằng cách sử dụng định tuyến. Chúng tôi đề cập đến URL mới như một giá trị trả về của hàm mà nó sẽ chuyển hướng người dùng. Điều này rất hữu ích khi chúng tôi tạm thời chuyển hướng người dùng sang một trang khác khi chúng tôi đang sửa đổi một trang web hiện có.

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()

Khi mã trên được thực thi, URL cơ sở chuyển đến trang đăng nhập sử dụng chức năng hủy bỏ để mã cho trang đăng nhập không bao giờ được thực thi.