Menu
CoddyTech

نموذج في Django

جزء من قسم النماذج في رحلة Django على Coddy. الدرس 5 من 20.

أرسل النموذج من دون تاريخ، وسيتعطل الموقع: لا يستطيع Django تحويل النص الفارغ إلى تاريخ. سيتطلب فحص كل حقل يدويًا كتابة تعليمات برمجية لكل حقل ولكل خطأ.

يصف نموذج Django الحقول مرة واحدة في forms.py، ويعرف كل حقل ما يقبله. نموذج حجز في مطعم:

from django import forms


class BookingForm(forms.Form):
    name = forms.CharField(max_length=50)
    day = forms.DateField()
    guests = forms.IntegerField()

كل حقل مطلوب ما لم تحدد خلاف ذلك، كما أن CharField يزيل المسافات أولًا، لذا يُعد الاسم المكوّن من مسافات فقط فارغًا.

في العرض، أنشئ النموذج من البيانات التي وصلت واستدعِ is_valid(): فهو يفحص كل حقل ويعيد True أو False. بعد ذلك، يحتوي form.cleaned_data على القيم المحوّلة إلى Python، لذا فإن cleaned_data["day"] هو datetime.date وليس نصًا:

form = BookingForm(request.POST)
if form.is_valid():
    day = form.cleaned_data["day"]
challenge icon

التحدي

سهل
  • في events/forms.py، اكتب EventForm: اجعل title وplace نصين لا يتجاوز طول كل منهما 100 حرف، وdate تاريخًا.
  • في new_event، تحقّق من POST باستخدامه. إذا كان صالحًا، أنشئ الحدث من القيم المحوّلة ثم أعد التوجيه. وإذا لم يكن صالحًا، فاعرض الصفحة مع تعيين error إلى Please check the form.

اضغط على تشغيل وأرسل النموذج من دون تاريخ.

جرّب بنفسك

from django import forms

جميع دروس النماذج

تدرّب بنفسك: Playground لـ Django