Flask - อาคาร URL

url_for()ฟังก์ชันมีประโยชน์มากสำหรับการสร้าง URL แบบไดนามิกสำหรับฟังก์ชันเฉพาะ ฟังก์ชันยอมรับชื่อของฟังก์ชันเป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์คำสำคัญอย่างน้อยหนึ่งรายการโดยแต่ละอาร์กิวเมนต์จะสอดคล้องกับส่วนตัวแปรของ URL

สคริปต์ต่อไปนี้แสดงให้เห็นถึงการใช้ url_for() ฟังก์ชัน

from flask import Flask, redirect, url_for
app = Flask(__name__)

@app.route('/admin')
def hello_admin():
   return 'Hello Admin'

@app.route('/guest/<guest>')
def hello_guest(guest):
   return 'Hello %s as Guest' % guest

@app.route('/user/<name>')
def hello_user(name):
   if name =='admin':
      return redirect(url_for('hello_admin'))
   else:
      return redirect(url_for('hello_guest',guest = name))

if __name__ == '__main__':
   app.run(debug = True)

สคริปต์ข้างต้นมีฟังก์ชัน user(name) ซึ่งรับค่าของอาร์กิวเมนต์จาก URL

User() ฟังก์ชันตรวจสอบว่าอาร์กิวเมนต์ได้รับตรงกันหรือไม่ ‘admin’หรือไม่. หากตรงกันแอปพลิเคชันจะถูกเปลี่ยนเส้นทางไปยังไฟล์hello_admin() ฟังก์ชันโดยใช้ url_for()มิฉะนั้นไปที่ไฟล์ hello_guest() ฟังก์ชันส่งผ่านอาร์กิวเมนต์ที่ได้รับเป็นพารามิเตอร์ของแขกไปยังมัน

บันทึกรหัสด้านบนและเรียกใช้จาก Python shell

เปิดเบราว์เซอร์และป้อน URL เป็น - http://localhost:5000/user/admin

การตอบสนองของแอปพลิเคชันในเบราว์เซอร์คือ -

Hello Admin

ป้อน URL ต่อไปนี้ในเบราว์เซอร์ - http://localhost:5000/user/mvl

ตอนนี้การตอบสนองของแอปพลิเคชันเปลี่ยนเป็น -

Hello mvl as Guest