البرمجة

تحقق فعّال من مُدخلات المستخدم في تطبيقات Flask باستخدام WTForms

في عالم تطوير تطبيقات الويب باستخدام إطار العمل Flask في لغة البرمجة بايثون، يُعتبر استخدام مكتبة WTForms أمرًا ذا أهمية خاصة. فهي تقدم واجهة سهلة وفعالة لإدارة نماذج الويب والتعامل مع بيانات المُستخدم بشكل آمن ومنظم. سنقوم في هذا النص بتفصيل كيفية التعامل مع إطار Flask ومكتبة WTForms لتحقيق التحقق من مُدخلات المستخدم بشكل فعّال.

إن بداية أي تطبيق Flask يشمل تعريف الطرق (الراوتات) وتحديد كيف يجب التعامل معها. في هذا السياق، يمكننا استخدام WTForms لتعريف نموذج يمثل البيانات التي يقوم المستخدم بإدخالها. على سبيل المثال، إذا كنت ترغب في إنشاء نموذج لتسجيل الدخول، يمكنك استخدام الكود التالي:

python
from flask import Flask, render_template, request from wtforms import Form, StringField, PasswordField, validators app = Flask(__name__) class LoginForm(Form): username = StringField('Username', [validators.Length(min=4, max=25)]) password = PasswordField('Password', [validators.DataRequired()]) @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm(request.form) if request.method == 'POST' and form.validate(): # قم بتنفيذ الإجراءات اللازمة بعد التحقق من صحة المدخلات # على سبيل المثال، يمكنك التحقق من قاعدة البيانات للمستخدم المقابل للمدخلات المقدمة # وإعادة توجيه المستخدم لصفحة مناسبة return 'تم تسجيل الدخول بنجاح!' return render_template('login.html', form=form) if __name__ == '__main__': app.run(debug=True)

في هذا المثال، يتم تعريف فئة LoginForm باستخدام WTForms، وتحتوي على حقول لاسم المستخدم وكلمة المرور. يتم تحديد بعض القواعد باستخدام validators للتحقق من صحة المدخلات، مثل الحد الأدنى والحد الأقصى لطول اسم المستخدم، وضرورة إدخال كلمة المرور.

ثم يتم استخدام هذا النموذج في راوت /login. عندما يقوم المستخدم بإرسال النموذج (POST)، يتم التحقق من صحة المدخلات باستخدام form.validate()، وإذا كانت صحيحة، يمكنك تنفيذ الإجراءات اللازمة، مثل التحقق من قاعدة البيانات وتوجيه المستخدم إلى صفحة معينة.

يُشدد هنا على أهمية استخدام WTForms في التحقق من المدخلات بدلاً من التحقق اليدوي، حيث تقدم هذه المكتبة ميزات مدمجة تسهل عليك التحقق من صحة البيانات والتعامل مع الأخطاء بشكل فعّال.

المزيد من المعلومات

بالطبع، دعنا نستكشف المزيد حول كيفية تحقق المدخلات باستخدام مكتبة WTForms وكيف يمكن تخصيص هذا العمل لتلبية احتياجات تطبيقك بشكل أفضل.

تخصيص رسائل الخطأ:

مكتبة WTForms توفر لك إمكانية تخصيص رسائل الخطأ لكل حقل. يمكنك تحديد رسالة خطأ مخصصة لكل قاعدة تحقق. على سبيل المثال:

python
class LoginForm(Form): username = StringField('Username', [validators.Length(min=4, max=25, message='يرجى إدخال اسم مستخدم صالح (4-25 حرفًا).')]) password = PasswordField('Password', [validators.DataRequired(message='يرجى إدخال كلمة مرور صالحة.')])

إظهار الأخطاء في واجهة المستخدم:

عندما تكون هناك أخطاء في نموذج WTForms، يمكنك إظهارها بسهولة في واجهة المستخدم. يمكنك استخدام خاصية form.errors للوصول إلى الأخطاء وعرضها في النموذج.

html
<form method="post"> {{ form.hidden_tag() }} <label for="username">اسم المستخدم:label> {{ form.username() }} {% if form.username.errors %} <p class="error">{{ form.username.errors[0] }}p> {% endif %} <label for="password">كلمة المرور:label> {{ form.password() }} {% if form.password.errors %} <p class="error">{{ form.password.errors[0] }}p> {% endif %} <input type="submit" value="تسجيل الدخول"> form>

استخدام حقول مخصصة:

يمكنك أيضًا إنشاء حقول مخصصة لتكون جزءًا من نموذج WTForms، مما يتيح لك تنفيذ تحقق مخصص. على سبيل المثال، إذا كنت تحتاج إلى تحقق معين على مستوى الخادم، يمكنك استخدام حقل مخصص:

python
from wtforms import StringField, Form, validators class UniqueUsername(validators.Optional): def __call__(self, form, field): if field.data: # قم بتنفيذ التحقق هنا، على سبيل المثال، التحقق من عدم تكرار اسم المستخدم في قاعدة البيانات pass class MyForm(Form): username = StringField('Username', [UniqueUsername(), validators.Length(min=4, max=25)])

تكوين رسائل النجاح:

يمكنك أيضًا تكوين رسائل النجاح التي يتم عرضها بعد نجاح عملية الإرسال. يمكنك تعيين flash message في Flask لعرض رسالة نجاح بعد تسجيل الدخول بنجاح، مثل:

python
from flask import flash, redirect, url_for @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm(request.form) if request.method == 'POST' and form.validate(): # عند تسجيل الدخول بنجاح، قم بعرض رسالة نجاح وقم بتوجيه المستخدم إلى صفحة مناسبة flash('تم تسجيل الدخول بنجاح!', 'success') return redirect(url_for('home')) return render_template('login.html', form=form)

تحسين أمان كلمة المرور:

لزيادة أمان تطبيقك، يُفضل تخزين كلمات المرور باستخدام تقنيات التشفير، مثل bcrypt. يمكنك تحقيق ذلك باستخدام مكتبة Flask-Bcrypt.

python
from flask_bcrypt import Bcrypt bcrypt = Bcrypt(app) # عند تسجيل المستخدم، قم بتشفير كلمة المرور قبل حفظها في قاعدة البيانات hashed_password = bcrypt.generate_password_hash('user_password').decode('utf-8') # عند تسجيل الدخول، قم بمقارنة كلمة المرور المدخلة بالنص المشفر في قاعدة البيانات if bcrypt.check_password_hash(stored_password, 'user_input_password'): # المطابقة، قم بالسماح بتسجيل الدخول

تلخيصًا، يعتبر تحقق المُدخلات باستخدام إطار Flask ومكتبة WTForms جزءًا حاسمًا من تطوير تطبيقات الويب بطريقة فعّالة وآمنة. يتيح لك هذا النهج تحقيق أمان عالي وتجربة مستخدم مريحة وسلسة.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!