วิธีการรับและส่งข้อมูลที่ส่งผ่าน redirect url_for ใน flask python

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
ewqolf
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 621
ลงทะเบียนเมื่อ: 14/11/2022 9:26 am

วิธีการรับและส่งข้อมูลที่ส่งผ่าน redirect url_for ใน flask python

โพสต์ที่ยังไม่ได้อ่าน โดย ewqolf »

คุณอาจจะกำลังประสบปัญหาในการส่งข้อมูลด้วย redirect url_for ใน flask python นะครับ ซึ่งคนที่ประสบปัญหานั้นก็เป็นผมเช่นเดียวกัน ซึ่งผมขอเกริ่นก่อนว่าทำไมเราต้องใช้ redirect นั้นจำเป็น และแต่กต่างจาก render_template อย่างไร แตกต่างกันตรงที่ render_template นั้นจะเป็นการ render ตัวไฟร์ HTML เข้ามาเลยและเมื่อเราส่งข้อมูลเข้าไปด้วยแล้วข้อมูลนั้นเราจะไปรับที่ฝั่งของ html หรือ javascript ได้เลย ซึ่งจะแตกต่างกับ redirect ที่เป็นการใส่ ลิ้งค์ route เข้าไปเพื่อให้มันทำงานใหม่โดยในหน้าเว็บนั้นอาจจะไม่แตกต่างกันมากเพราะจเเปลี่ยนแปลงแค่ ลิ้งค์ แต่ทางหลังบ้านนั้นเราสามารถสั่งให้รันหน้าเว็ฐใหม่หรือเอาข้อมูลใหม่ใส่ใน route ใหม่ได้ ซึ่งบางทีเรานั้นต้องการที่จะส่งข้อมูลต่างๆไปพร้อมกับ redirect url_for แล้วเราต้องการมาใช้งานต่อเราจะต้องส่งอย่างไรและรับอย่างไรกันนะ

ซึ่งจะขอทำการสร้างตัวโครงของ flask ขึ้นมาก่อนนะครับ

โค้ด: เลือกทั้งหมด

rom flask import Flask,render_template,request,redirect,url_for
app=Flask(__name__)
app.config['SECRET_KEY']='secret_key'
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"

@app.route('/test1')
def test1():
	x="helloworld"
	return redirect(url_for('test2',x=x))
    
@app.route('/test2')
def test2():
    return render_template('index.html')
 
 if __name__==("__main__"):
 	app.run()
ซึ่งผมได้ทำการสร้าง route ขึ้น 2 ตัวครับเราจะได้ทำการส่งข้อมูลจาก route นึงไปยัง อีก route นึงได้ครับ ซึ่งข้อมูลที่เราจะส่งไปนั้นคือตัวแปร x ที่มีข้อมูล helloworld อยู่และทำการส่งไปที่ route ของ test2 ซึ่งในโ๕้ดนั้นจะยังไม่มีส่วนของการรับค่านะครับ และจากนั้นก็จะ render_template ไปยัง index.html ครับซึ่งเรา remder_template ไปที่ไหนไม่สำคัญครับเพราะเราจะโฟกัสไปที่การส่งข้อมูลและรับใน redirect

โค้ด: เลือกทั้งหมด

@app.route('/test2')
def test2():
	x=request.args['x']
	print(x)
	return render_template('index.html')
ในโค้ดส่วนดังกล่าวนี้เป็นการรับค่าจาก redirect ซึ่งจะสั่งเกตุได้ว่าการรับค่านั้นจะรับคล้ายๆกับวิธีการรับค่า get ครับซึ่งโดยวิธีนี้เราจะเอาข้อมูลมาจาก route ของ test1 จากนั้นนำมาแสดง
ผลลัพธ์ของการรับค่า redirect
ผลลัพธ์ของการรับค่า redirect
ผลลัพธ์ของการรับค่า redirect.png (469 ไบต์) Viewed 797 times
ผลลัพธ์ที่ผมแสดงให้ดูนั้นจะเป็ฯแค่ส่วนของ print ที่แสดงออกมาทางฝั่ง python เท่านั้นครับ ซึ่งก็จะเห็นได้ว่าเรานั้นจะส่งค่ามากจาก redirect เพื่อส่งข้อมูลจาก route สู่ route ได้ครับ

อ้างอิง
https://www.delftstack.com/howto/python-flask/flask-redirect-with-parameters/
https://stackoverflow.com/questions/26954122/how-can-i-pass-arguments-into-redirecturl-for-of-flask
https://code-maven.com/slides/python/flask-internal-redirect-parameters
คนจะตายเมื่อถูกฆ่า...ขอบคุณครับ
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: noncup302 และบุคลทั่วไป 96