النماذج وبيانات الطلب
عالج إدخالات المستخدم
النماذج وبيانات الطلب درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
كائن request
يمنح Flask كل عرض إمكانية الوصول إلى كائن request عام يحتوي على جميع البيانات الواردة: حقول النماذج، وسلاسل الاستعلام، وJSON، والترويسات، وغير ذلك.
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')معاملات سلسلة الاستعلام
توجد البيانات الواقعة بعد ? في عنوان URL داخل request.args. استخدم .get() لقراءة قيمة بأمان.
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('q', '')
return 'Searching for ' + term
print('/search?q=cats -> request.args')نموذج HTML
يرسل النموذج البيانات عند إرساله. وتحدد سمتا method وaction كيفية الإرسال ومكانه.
# <form method='POST' action='/login'>
# <input name='username'>
# <input name='password' type='password'>
# <button>Submit</button>
# </form>
print('Form posts username and password')قراءة بيانات النموذج
تصل حقول النموذج المُرسلة إلى request.form. ويمكنك الوصول إليها باستخدام سمة name الخاصة بحقل الإدخال.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form['username']
return 'Welcome ' + user
print('request.form holds posted fields')الوصول الآمن باستخدام get
يؤدي استخدام request.form['x'] إلى إطلاق استثناء إذا كان المفتاح مفقودًا. لذا يُفضّل استخدام request.form.get('x')، الذي يُرجع None بدلًا من ذلك.
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
if not user:
return 'Missing username', 400
return 'Welcome ' + user
print('.get avoids KeyError')GET وPOST في عرض واحد
من الأنماط الشائعة عرض النموذج عند استخدام GET، ومعالجة البيانات عند استخدام POST، وكل ذلك في عرض واحد.
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
return 'Thanks, ' + request.form.get('name', 'friend')
return render_template('contact.html')
print('One view, two methods')التحقق من المدخلات
لا تثق أبدًا بمدخلات المستخدم. تحقّق من وجود الحقول المطلوبة واحتوائها على قيم منطقية قبل استخدامها.
from flask import Flask, request
app = Flask(__name__)
@app.route('/age', methods=['POST'])
def age():
raw = request.form.get('age', '')
if not raw.isdigit():
return 'Age must be a number', 400
return 'Age is ' + raw
print('Validate before trusting input')قراءة JSON
غالبًا ما ترسل عملاء API بيانات JSON. تحلّل request.get_json() الجسم وتحوله إلى قاموس Python.
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
data = request.get_json()
return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')تحميل الملفات
توجد الملفات التي جرى تحميلها في request.files. احفظ أحدها باستخدام أسلوب .save() بعد التحقق منه.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('photo')
if f:
return 'Received ' + f.filename
return 'No file', 400
print('request.files holds uploads')إعادة التوجيه بعد POST
بعد معالجة نموذج، أعد توجيه المستخدم لتجنب عمليات الإرسال المكررة عند تحديث الصفحة. استخدم redirect(url_for(...)).
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/done')
def done():
return 'All done'
@app.route('/save', methods=['POST'])
def save():
return redirect(url_for('done'))
print('Post/Redirect/Get pattern')رسائل Flash
تخزّن flash() رسالةً تُعرض مرة واحدة بعد إعادة التوجيه، وهي مناسبة جدًا لتأكيدات مثل «تم الحفظ بنجاح».
from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'
@app.route('/save', methods=['POST'])
def save():
flash('Saved successfully')
return redirect(url_for('save'))
print('flash shows a one-time message')اختبار سريع
اختبر معرفتك بمعالجة النماذج.
مراجعة
عالجت مدخلات المستخدم في Flask.
- استخدم
request.argsلسلاسل الاستعلام، وrequest.formلحقول النماذج - استخدم
request.get_json()لأجسام JSON، وrequest.filesللملفات المحمّلة - تحقّق دائمًا من المدخلات، واستخدم
.get()للوصول الآمن - استخدم نمط Post/Redirect/Get و
flash()لتجربة مستخدم أفضل
الأسئلة الشائعة
هل درس «النماذج وبيانات الطلب» مجاني؟
نعم — نص درس «النماذج وبيانات الطلب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «النماذج وبيانات الطلب»؟
عالج إدخالات المستخدم تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «النماذج وبيانات الطلب»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المسارات وواجهات العرض
- القوالب باستخدام Jinja2
- النماذج وبيانات الطلب
- إنشاء نقطة نهاية REST