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

التحدي

سهل

اجعل نموذج Django يتحقق من الحدث الجديد.

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

أرسل النموذج من دون تاريخ: سترى Please check the form.

جرّب بنفسك

from django import forms

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

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