الاستمارات

albaderمنذ 6 سنوات

الاستمارات في جانغو :

 

جانغو تقدم خدمة انشاء استمارات  والمقصود بالاستمارات هي مايحتويه الفورم form

input

textarea

and more

 

طبعا في هذا الدرس

قمنا بانشاء فورم لاضافة محتوى

 

سنقوم بالتعديل عليه بالكامل  وهو سيكون درسنا لهذا اليوم ان شاء الله

إذهب الى مجلد التطبيق blog

وقم بانشاء ملف جديد باسم forms.py

سنقوم باستدعاء مكتبة الفورم في داخل الملف

from django import forms

 

بعد ان استدعيناها

 

لدينا كلاس داخل ملف models.py  يحتوي على حقول سنستعين بهذا الكلاس لانشاء نفس الحقول ولكن كإستمارات

 

إذا نحتاج استدعاء هذا الكلاس من داخل ملف المودل كالتالي

from .models import TestBlog

بعد ان استدعينا مكتبة الفورم وكلاسنا الخاص بقاعدة البيانات

 

سنقوم الان بانشاء كلاس جديد  وظيفة هذا الكلاس صناعة استمارات اعتمادا على  كلاسنا بقاعدة البيانات

 

class CreateForm(forms.ModelForm):
    class Meta:
        model = TestBlog
        fields = '__all__'

كلاس يرث من مودل فورم

وقمنا باختيار المودل الذي يجلب منه الحقول TestBlog

اما fields  هنا اخترنا الحقول التي ستعرض واخترناها جميعا

وبالامكان تحديد نوع الحقول بالطريقة التالية

fields = 'title','post'

هكذا سيقوم بعرض حقلين فقط

اما لو اردنا ان نحذف حقل معين ونمنعه من العرض

exclude = 'author'

 

الان نمنع اسم الكاتب من العرض

ولكن نحن اخترنا fields = all

لكي نعرض جميع الحقول التي هي ثلاثه

 

بعد ان قمنا بانشاء الحقول نذهب الى ملفنا views.py

لكي نقوم بالتعديل على دالتنا create

قم بحذف الدالة السابقة وانشاء دالة جديدة بنفس الاسم وبداخلها

def create(request):
    form = CreateForm

    context = {
        'form':form
    }
    return render(request, 'blog/create.html',context)

يوجد لدينا متغير جديد باسم form  وقيمته هو الكلاس الذي في ملف forms.py 

يجب علينا استدعاءه داخل ملف views.py

بالطريقه التالية

from .forms import CreateForm

 

طبعا بعد ماكتبنا دالتنا create  فقط للتجربة وعرض المحتوى

 

نذهب الى ملفنا create.html

الموجود داخل templates/blog

نحذف كل مابداخله ونكتب الكود التالي

 

<form action="" method="post">

    {% csrf_token %}

    {{ form }}
    <input type="submit" value="add!">
</form>

نفس الكود السابق فقط حذفنا جميع الاستمارات بداخل الفورم input + texterea

ووضعنا بدالهم {{ form }}

 

الان نقوم بتشغيل السيرفر ونتوجه الى الرابط

http://127.0.0.1:8000/template/create/

تمام الان ظهرت لدينا الاستمارات

 

الان نرجع ونعدل دالتنا create  داخل ملف views  للتحقق من المدخلات وان الطلب من نوع بوست ونقوم بحفظ البيانات الى اخره من امور

 

الدالة بعد التعديل

def create(request):
    form = CreateForm(request.POST or None)#نوع الطلب بوست
    if form.is_valid():#شرط للتحقق من المدخلات 
        form.save()# الحفظ الى قاعدة البيانات 
    else:# نفي الشرط
        form = CreateForm # يعيد الفورم للعرض لو لم يتحقق من الشرط

    context = {# شرحناه كثير بالدروس السابقه 
        'form':form
    }
    return render(request, 'blog/create.html',context)

 

بعد ان كتبنا دالتنا

نذهب الى المتصفح ونضيف معلومات جديده 

سيتم الاضافة بنجاح

##########################################

نأتي الان لكيفية فلترة المدخلات

 

نذهب الى الملف forms

وسنقوم بعمل فتره على الاسم  كمثال فقط ان نجعل اي شخص يدخل اسمه ان يتحول الاسم تلقائيا لحروف كبيره 

نضيف دالة

 

    def clean_author(self):
        author = self.cleaned_data['author'].upper()
        return author

 

تلقائيا يقوم بتحويل المدخل الى حروف كبيره

اصبح ملف الفورم بالكامل كالتي

from django import forms

from .models import TestBlog

class CreateForm(forms.ModelForm):
    class Meta:
        model = TestBlog
        fields = 'post','title','author'
    def clean_author(self):
        author = self.cleaned_data['author'].upper()
        return author


 

 

ملف views جميع ماضفناه جديد بالكامل

 

from .forms import CreateForm




def create(request):
    form = CreateForm(request.POST or None)
    if form.is_valid():
        form.save()
    else:
        form = CreateForm

    context = {
        'form':form,
    }
    return render(request, 'blog/create.html',context)

 

 

ملف create.html كاملا بعد التعديل

 

<form action="" method="post">

    {% csrf_token %}

    {{ form }}
    <input type="submit" value="add!">
</form>

 

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !