Python - การกำหนดเส้นทาง
การกำหนดเส้นทางเป็นกลไกของการแมป URL โดยตรงกับโค้ดที่สร้างเว็บเพจ ช่วยในการจัดการโครงสร้างของหน้าเว็บได้ดีขึ้นและเพิ่มประสิทธิภาพของเว็บไซต์ได้อย่างมากและการปรับปรุงหรือแก้ไขเพิ่มเติมจะตรงไปตรงมา ในการกำหนดเส้นทาง python ถูกนำไปใช้ในเว็บเฟรมส่วนใหญ่ เราจะเห็นตัวอย่างจากflask กรอบงานเว็บในบทนี้
การกำหนดเส้นทางใน Flask
route()มัณฑนากรใน 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')
เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -
/
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 พื้นฐานจะไปที่หน้าเข้าสู่ระบบซึ่งใช้ฟังก์ชันยกเลิกเพื่อให้รหัสสำหรับหน้าล็อกอินไม่ถูกเรียกใช้