في مقالتنا السابقة، تناولنا أساسيات إعداد مشروع Django وأنشأنا نموذج التمرين، والذي عرضناه على الواجهة الأمامية كقائمة. في هذه المقالة، سنتعمق في تنفيذ عمليات CRUD. بالنسبة لأولئك غير المألوفين، يشير مصطلح CRUD إلى الإنشاء والقراءة والتحديث والحذف، وهي الإجراءات الأساسية الأربعة التي يمكنك تنفيذها على بياناتك.
الآن بعد أن قمنا بإعداد واجهة برمجة التطبيقات الخاصة بنا في مجلد التطبيق، سنقوم ببساطة بتوسيع عرض الفهرس للتعامل مع طلبات الإنشاء والتحديث والحذف.
فلنقم بإعداد نموذج يسمح للمستخدمين بإنشاء التمارين. سنستخدم قوالب HTML لهذا الغرض مرة أخرى. للبدء، أنشئ نموذجًا جديدًا باسم add_exercise.html في مجلد التطبيقات/القوالب.
بعد ذلك، في نموذجنا index.html، سنضمّن النموذج add_exercise.html باستخدام الطريقة التالية:
{% extends "base.html" %} {% block content %}Exercises
{% include 'add_exercise.html' %} ... {% endblock %}
نحن نستخدم علامة التضمين هنا، والتي تعمل على تعزيز قابلية التركيب عبر نماذج HTML، مما يجعل صيانة التعليمات البرمجية وفهمها أسهل. إذا قمت بتحديث الصفحة في متصفحك، فيجب أن ترى النموذج يظهر على الشاشة.
في HTML، نستخدم علامة
نحن نستخدم علامة
وفي عرض التدريبات، سنقوم بإجراء التغييرات التالية للتمييز بين الطلبات.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
نتحقق من اسم الزر ونعيد توجيه الطلب إلى طريقة التمرين المناسبة وفقًا لذلك.
دعونا نضيف طريقة فئة التحديث إلى نموذج التمرين في app/models.py.
def update(request): id = request.POST.get('id') title = request.POST.get('title') date = request.POST.get('date') exercise = Exercise.objects.filter(pk=id).update(title=title, date=date) return exercise
لتحديث صف في قاعدة البيانات، يمكننا استخدام طريقة التحديث المتاحة في نموذج التمرين. ومع ذلك، قبل التحديث، نحتاج إلى التأكد من أننا نقوم بتحديث التمرين الصحيح. وللقيام بذلك، نقوم بتصفية التمارين حسب المفتاح الأساسي، وهو المعرف، ونقوم بتحديث هذا التمرين المحدد فقط.
وبالمثل، سنضيف زر حذف بجوار كل تمرين في قالب التمرين.html.
سنقوم بتعيين الحذف كقيمة لسمة الاسم، وفي view.py، سنقوم بتوسيع عبارات if...elif للتعامل مع عملية الحذف.
def index(request): if request.method == 'POST': create = 'create' in request.POST update = 'update' in request.POST delete = 'delete' in request.POST if create == True: models.Exercise.create(request) elif update == True: models.Exercise.update(request) elif delete == True: models.Exercise.delete(request) return redirect('/') exercises = ( models.Exercise.objects.all().order_by("created_at") ) return render(request, "index.html", context={'exercises': exercises})
وفي نموذج التمرين، سنضيف طريقة حذف الفصل.
def delete(request): id = request.POST.get('id') is_deleted = Exercise.objects.filter(pk=id).delete() if is_deleted == 1: return True return False
مع هذه الإضافة، نجحنا في تنفيذ عمليات CRUD في تطبيق Python وDjango الخاص بنا.
from django.http import HttpResponseRedirect def index(request): ... return redirect('/') # or return HttpResponseRedirect(request.META['HTTP_REFERER'])
باختصار، من خلال إدارة طلبات POST بشكل فعال وضمان إعادة التوجيه المناسبة، يمكننا إنشاء تجربة مستخدم سلسة أثناء تنفيذ عمليات CRUD في تطبيق Django الخاص بنا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3