كيفية إصلاح الحقول المفقودة في نماذج Pydantic

Python FastAPI

استكشاف مشكلات إشعارات البريد الإلكتروني في Pydantic وإصلاحها

في هذه المقالة، نستكشف سبب إشارة Pydantic إلى أن الحقول مفقودة، على الرغم من أنها مُعلن عنها في الكود. تنشأ هذه المشكلة غالبًا عند إنشاء واجهة برمجة التطبيقات (API) التي تعالج إشعارات البريد الإلكتروني بحقول إضافية مثل المعرف والطوابع الزمنية.

سنتعمق في تفاصيل رسالة الخطأ وسنقدم حلاً خطوة بخطوة لضمان التعرف على جميع الحقول بشكل صحيح. بالإضافة إلى ذلك، سنناقش أفضل الممارسات للتعامل مع مثل هذه الإشعارات في نماذج Pydantic.

يأمر وصف
uuid.uuid4() يُنشئ UUID عشوائيًا (المعرف الفريد عالميًا).
datetime.datetime.now(datetime.UTC).isoformat() يحصل على التاريخ والوقت الحاليين بتنسيق ISO 8601 مع المنطقة الزمنية UTC.
@app.post("/notifications/email") يحدد نقطة نهاية في FastAPI للتعامل مع طلبات POST لإنشاء إشعارات البريد الإلكتروني.
Enum تُستخدم لإنشاء التعدادات، وهي مجموعة من الأسماء الرمزية المرتبطة بقيم فريدة وثابتة.
BaseModel فئة أساسية في Pydantic لإنشاء نماذج البيانات مع التحقق من صحة النوع.
dict() يحول مثيل نموذج Pydantic إلى قاموس.

فهم نظام إشعارات البريد الإلكتروني Pydantic

تم تصميم البرامج النصية المتوفرة لإنشاء واجهة برمجة التطبيقات (API) باستخدام FastAPI وPydantic للتعامل مع إشعارات البريد الإلكتروني. يتضمن الهيكل الرئيسي تعريف إشعار بحقول مختلفة مثل محتوى الإشعار والأولوية ومعلومات المرسل. ال تصنف فئة التعداد مستويات الأولوية على أنها عالية ومتوسطة ومنخفضة. ال يحتوي النموذج الأساسي على تفاصيل الإشعارات الأساسية، في حين أن يقوم النموذج بتوسيع هذا ليشمل الحقول الخاصة بالبريد الإلكتروني مثل email_to و .

ال يمتد الفصل أكثر عن طريق إضافة معرف فريد تم إنشاؤه تلقائيًا باستخدام والطابع الزمني مع datetime.datetime.now(datetime.UTC).isoformat(). نقطة نهاية API، المحددة بـ ، يتعامل مع طلبات POST لإنشاء الإشعارات. وظيفة نقطة النهاية يتلقى الكائن، ويطبع محتوياته باستخدام email_notification.dict()، وتقوم بإرجاع مثيل لـ مع الحقول الإضافية.

حل مشكلة الحقول المفقودة في Pydantic API

بايثون مع FastAPI وPydantic

from enum import Enum
from pydantic import BaseModel
from fastapi import FastAPI
import uuid
import datetime

app = FastAPI()

class NotificationPriority(Enum):
    high = "high"
    medium = "medium"
    low = "low"

class Notification(BaseModel):
    notification: str
    priority: NotificationPriority
    notification_from: str

class EmailNotification(Notification):
    email_to: str
    email_from: str | None = None

class EmailNotificationSystem(BaseModel):
    id: uuid.UUID = uuid.uuid4()
    ts: datetime.datetime = datetime.datetime.now(datetime.UTC).isoformat()
    email: EmailNotification

@app.post("/notifications/email")
async def create_notification(email_notification: EmailNotification):
    print(email_notification.dict())
    system = EmailNotificationSystem(email=email_notification)
    return system

أفضل الممارسات للتعامل مع الإشعارات في Pydantic

بايثون مع FastAPI وPydantic

from enum import Enum
from pydantic import BaseModel
from fastapi import FastAPI
import uuid
import datetime

app = FastAPI()

class NotificationPriority(Enum):
    HIGH = "high"
    MEDIUM = "medium"
    LOW = "low"

class Notification(BaseModel):
    notification: str
    priority: NotificationPriority
    notification_from: str

class EmailNotification(Notification):
    email_to: str
    email_from: str | None = None

class EmailNotificationSystem(BaseModel):
    id: uuid.UUID = uuid.uuid4()
    ts: datetime.datetime = datetime.datetime.now(datetime.timezone.utc)
    email: EmailNotification

@app.post("/notifications/email")
async def create_notification(email_notification: EmailNotification):
    print(email_notification.dict())
    system = EmailNotificationSystem(email=email_notification)
    return system

الاستخدام المتقدم لـ Pydantic وFastAPI للإشعارات

هناك جانب مهم آخر يجب مراعاته عند استخدام Pydantic وFastAPI لإنشاء واجهات برمجة التطبيقات وهو التحقق من صحة البيانات وتسلسلها. تتفوق Pydantic في ضمان توافق البيانات مع أنواع محددة، وهو أمر بالغ الأهمية للحفاظ على سلامة البيانات. في مثالنا، باستخدام التعدادات مثل يضمن قبول مستويات الأولوية الصالحة فقط. بالإضافة إلى ذلك، فإن الاستفادة من قدرة Pydantic على تحليل النماذج المتداخلة والتحقق من صحتها يمكن أن تبسط التعامل مع هياكل البيانات المعقدة. من خلال تحديد النموذج، نقوم بتغليف جميع الحقول ذات الصلة المتعلقة بإشعارات البريد الإلكتروني.

علاوة على ذلك، يساعد التعامل مع الطوابع الزمنية والمعرفات الفريدة (UUID) ضمن نماذج Pydantic على إدارة المعرفات الفريدة والطوابع الزمنية تلقائيًا، مما يضمن إمكانية تتبع كل إشعار وفريدة من نوعها. لا تساعد هذه الممارسة في تصحيح الأخطاء فحسب، بل تعمل أيضًا على تحسين أمان النظام وموثوقيته. يتيح تكامل FastAPI مع Pydantic التعامل السلس مع الطلبات والتحقق من صحة البيانات، مما يجعله خيارًا ممتازًا لبناء واجهات برمجة تطبيقات قوية. ويضمن الجمع بين هذه الأدوات قدرة التطبيق على التعامل مع مختلف حالات وأخطاء الحافة بأمان، مما يوفر تجربة مستخدم سلسة.

  1. ما هي استخدامات بيدانتيك؟
  2. يتم استخدام Pydantic للتحقق من صحة البيانات وإدارة الإعدادات باستخدام التعليقات التوضيحية من نوع Python.
  3. كيف يمكنك تعريف التعداد في Pydantic؟
  4. يمكنك تعريف التعداد في Pydantic عن طريق التصنيف الفرعي وإنشاء أسماء رمزية مرتبطة بقيم فريدة.
  5. ماذا فعلت تفعل في Pydantic؟
  6. بمثابة فئة أساسية لإنشاء نماذج البيانات مع إمكانات التحقق من صحة النوع والتسلسل.
  7. كيف يمكنك إنشاء معرف فريد في نموذج Pydantic؟
  8. يمكنك إنشاء معرف فريد في نموذج Pydantic باستخدام لتوليد UUIDs عشوائية.
  9. كيف يمكنك الحصول على الطابع الزمني الحالي بتنسيق ISO؟
  10. يمكنك الحصول على الطابع الزمني الحالي بتنسيق ISO باستخدام .
  11. ماذا فعلت الديكور تفعل في FastAPI؟
  12. ال يحدّد الديكور نقطة نهاية للتعامل مع طلبات POST في تطبيق FastAPI.
  13. كيف يمكنك تحويل نموذج Pydantic إلى قاموس؟
  14. يمكنك تحويل نموذج Pydantic إلى قاموس باستخدام ملف طريقة.
  15. ما هي فوائد استخدام Pydantic مع FastAPI؟
  16. تشمل فوائد استخدام Pydantic مع FastAPI التحقق القوي من صحة البيانات، والتوثيق التلقائي، والتعامل السلس مع الطلبات.

في الختام، يمكن معالجة مشكلة الحقول المفقودة في نماذج Pydantic من خلال ضمان التحقق الصحيح من صحة البيانات وإنشاء مثيل للنموذج. يوفر استخدام FastAPI جنبًا إلى جنب مع Pydantic مزيجًا قويًا لبناء واجهات برمجة تطبيقات قوية. يساعد تحديد التعدادات بشكل صحيح، والتعامل مع النماذج المتداخلة، واستخدام UUIDs والطوابع الزمنية بشكل فعال في إدارة هياكل البيانات المعقدة. لا تعمل هذه الممارسات على حل أخطاء التحقق من الصحة فحسب، بل تعمل أيضًا على تحسين الموثوقية العامة للنظام وقابلية صيانته، مما يضمن التشغيل السلس والخالي من الأخطاء.