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

إطار عمل Flask

السؤال

Recommended Posts

  • 0
نشر

نعم بالطبع يمكنك السؤال في أى شئ تريده يمكنك طرح السؤال هنا في قسم الأسئلة العامة وسيتم توفير الإجابات لك من قبل المدربين المتاحين .

  • 0
نشر

ما فائدة ال redirect في ال flask. مثلا هذا الكود:
 

# Stores registrants in a dictionary

from flask import Flask, redirect, render_template, request

app = Flask(__name__)

REGISTRANTS = {}

SPORTS = [
    "Basketball",
    "Soccer",
    "Ultimate Frisbee"
]


@app.route("/")
def index():
    return render_template("index.html", sports=SPORTS)


@app.route("/register", methods=["POST"])
def register():

    # Validate name
    name = request.form.get("name")
    if not name:
        return render_template("error.html", message="Missing name")

    # Validate sport
    sport = request.form.get("sport")
    if not sport:
        return render_template("error.html", message="Missing sport")
    if sport not in SPORTS:
        return render_template("error.html", message="Invalid sport")

    # Remember registrant
    REGISTRANTS[name] = sport

    # Confirm registration
    return render_template("registrants.html", registrants=REGISTRANTS)

# @app.route("/registrants")
def registrants():
    return render_template("registrants.html", registrants=REGISTRANTS)

قمت بتعديلة ليصبح:

# Stores registrants in a dictionary

from flask import Flask, redirect, render_template, request

app = Flask(__name__)

REGISTRANTS = {}

SPORTS = [
    "Basketball",
    "Soccer",
    "Ultimate Frisbee"
]


@app.route("/")
def index():
    return render_template("index.html", sports=SPORTS)


@app.route("/register", methods=["POST"])
def register():

    # Validate name
    name = request.form.get("name")
    if not name:
        return render_template("error.html", message="Missing name")

    # Validate sport
    sport = request.form.get("sport")
    if not sport:
        return render_template("error.html", message="Missing sport")
    if sport not in SPORTS:
        return render_template("error.html", message="Invalid sport")

    # Remember registrant
    REGISTRANTS[name] = sport

    # Confirm registration
    return render_template("registrants.html", registrants=REGISTRANTS)

لم أجد أي فرق في الشكل النهائي. فلماذا تمت اضافة redirect و لم نستخدم ال render_template مباشرة.

  • 0
نشر
بتاريخ 9 ساعة قال Abdelrehman Elsied:

ما فائدة ال redirect في ال flask. مثلا هذا الكود:
 

# Stores registrants in a dictionary

from flask import Flask, redirect, render_template, request

app = Flask(__name__)

REGISTRANTS = {}

SPORTS = [
    "Basketball",
    "Soccer",
    "Ultimate Frisbee"
]


@app.route("/")
def index():
    return render_template("index.html", sports=SPORTS)


@app.route("/register", methods=["POST"])
def register():

    # Validate name
    name = request.form.get("name")
    if not name:
        return render_template("error.html", message="Missing name")

    # Validate sport
    sport = request.form.get("sport")
    if not sport:
        return render_template("error.html", message="Missing sport")
    if sport not in SPORTS:
        return render_template("error.html", message="Invalid sport")

    # Remember registrant
    REGISTRANTS[name] = sport

    # Confirm registration
    return render_template("registrants.html", registrants=REGISTRANTS)

# @app.route("/registrants")
def registrants():
    return render_template("registrants.html", registrants=REGISTRANTS)

قمت بتعديلة ليصبح:

# Stores registrants in a dictionary

from flask import Flask, redirect, render_template, request

app = Flask(__name__)

REGISTRANTS = {}

SPORTS = [
    "Basketball",
    "Soccer",
    "Ultimate Frisbee"
]


@app.route("/")
def index():
    return render_template("index.html", sports=SPORTS)


@app.route("/register", methods=["POST"])
def register():

    # Validate name
    name = request.form.get("name")
    if not name:
        return render_template("error.html", message="Missing name")

    # Validate sport
    sport = request.form.get("sport")
    if not sport:
        return render_template("error.html", message="Missing sport")
    if sport not in SPORTS:
        return render_template("error.html", message="Invalid sport")

    # Remember registrant
    REGISTRANTS[name] = sport

    # Confirm registration
    return render_template("registrants.html", registrants=REGISTRANTS)

لم أجد أي فرق في الشكل النهائي. فلماذا تمت اضافة redirect و لم نستخدم ال render_template مباشرة.

في الكود لم يتم إستخدام redirect بل تم فقط إستيرادها .

وإليك الفرق بين render_template و redirect:

render_template:

  • يعرض القالب مباشرة.
  • يبقى المستخدم في نفس مسار URL.
  • إذا قام المستخدم بتحديث الصفحة (refresh)، سيعيد إرسال النموذج (POST request) مما قد يسبب تسجيلات مكررة.

redirect:

  • يرسل المستخدم إلى مسار آخر مثلا من /register إلى /registrants.
  • يغير URL في المتصفح
  • يمنع إعادة إرسال النموذج عند تحديث الصفحة

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...