اذهب إلى المحتوى
  • 0

تمرير بيانات عند إعادة التحويل redirect في فلاسك Flask؟

Mohssen A Mohssen

السؤال

في فلاسك يمكنني تمرير بيانات قالب بالشكل التالي:

render_template("hello.html", messages={'title':'hello world'})

ويمكنني إستخدام هذه البيانات في القالب نفسه من خلال الكود التالي ليتم عرض كلمة hello:

{{ messages['title'] }}

لكن ماذا إذا كان هناك مسار يؤدي إلى عرض نفس القالب:

@app.route("/hello")
def hello():
    # هنا يتم تنفيذ بعض الأكود
    return render_template("hello.html")

إذا أردت أن يتم تنفيذ نفس الأكواد كما في المثال السابق فيجب أن أستعمل الدالة redirect:

return redirect("/hello", messages={"title":"hello world"})

لكن يبدو أنه لا يمكن إستخدام redirect لتمرير البيانات، حيث يظهر الكود السابق الخطأ التالي:

TypeError: redirect() got an unexpected keyword argument 'messages'

هل توجد طريقة لتمرير البيانات أثناء عمل إعادة توجيه redirect؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

تستطيع أن تقوم بتمرير الرسائل بإستخدام معاملات عنوان URL (تسمى URL parameter) بالشكل التالي:

from flask import session, url_for

def foo():
    messages = json.dumps({"title":"hello world"})	# تحويل الكائن إلى نص
    return redirect(url_for('hello', messages=messages))

@app.route('/hello')
def hello():
    messages = request.args['messages']  # لإستعادة الرسائل من الدالة url_for()
    return render_template("hello.html", messages=json.loads(messages))

أو يمكنك أن تستعمل الجلسة session لتخزين قيمة message في cookie ثم إستخراج قيمة message من داخل هذه الـ cookie في الدالة hello بالشكل التالي:

from flask import session, url_for

def foo():
    messages = json.dumps({"title":"hello world"})	# تحويل الكائن إلى نص
    session['messages'] = messages					# تخزينه في الـ session
    return redirect(url_for('hello'))

@app.route('/hello')
def hello():
    messages = session['messages']       # لإستعادة الرسائل من الـ session
    return render_template("hello.html", messages=json.loads(messages))
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...