آموزش سیگنال ها در MongoEngine

3 سال پیش
آموزش سیگنال ها در MongoEngine

آموزش سیگنال ها در MongoEngine

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش سیگنال ها در MongoEngine خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون

سیگنال ها رویدادهایی هستند که توسط یک شی send فرستنده ارسال می شوند ، هر تعداد از اشیا receive گیرنده می توانند در چنین رویدادهایی مشترک شوند. یک گیرنده سیگنال می تواند در یک فرستنده خاص مشترک شود یا ممکن است از فرستنده های زیادی سیگنال دریافت کند.

در MongoEngine ، مدیریت سیگنال توسط کتابخانه چشمک زن پشتیبانی می شود ، به این معنی که شما باید آن را با استفاده از ابزار pip نصب کنید. ماژول mongoengine.signals تعاریف سیگنال های زیر را دارد –

  • pre_init در هنگام ایجاد سند جدید یا نمونه EmbeddedDocument فراخوانی شده و پس از جمع آوری استدلال های سازنده اجرا می شود اما قبل از انجام هرگونه پردازش اضافی برای آنها.
  • post_init پس از پایان مراحل پردازش سند جدید یا پرونده EmbeddedDocument فراخوانی شد.
  • pre_save قبل از انجام هر کاری در save () فراخوانی می شود.
  • pre_save_post_validation بعد از اینکه اعتبار سنجی اتفاق افتاد اما قبل از ذخیره ، در ()save فراخوانی می شود.
  • post_save پس از انجام موفقیت آمیز اکثر اقدامات (اعتبار سنجی ، درج / به روزرسانی) در ()save فراخوانی می شود. یک استدلال اضافی برای کلمه کلیدی Boolean منتقل می شود تا نشان دهد که ذخیره یک درج یا به روزرسانی بوده است.
  • pre_delete قبل از اقدام برای حذف ، در ()delete فراخوانی می شود.
  • post_delete پس از حذف موفقیت آمیز رکورد ، در هنگام ()delete فراخوانی می شود.
  • pre_bulk_insert بعد از اعتبارسنجی اسناد برای درج فراخوانی می شود ، اما قبل از نوشتن هرگونه داده.
  • post_bulk_insert بعد از یک عمل موفقیت آمیز درج انبوه فراخوانی می شود. یک استدلال Boolean اضافی بارگیری شده ، محتویات اسناد را به عنوان نمونه های Document when True یا لیستی از مقادیر اصلی اصلی برای سوابق درج شده در صورت False مشخص می کند.

سپس یک تابع کنترل کننده رویداد به کلاس Document متصل می شود. توجه داشته باشید که EmbeddedDocument فقط از سیگنال های pre / post_init پشتیبانی می کند. pre / post_save و غیره ، فقط باید به کلاس Document ضمیمه شوند.

همچنین می توانید با استفاده از یک دکوراتور تعدادی سیگنال را به سرعت ایجاد کرده و آنها را به عنوان تزئینات کلاس به زیر کلاس های Document یا EmbeddedDocument خود متصل کنید.

در مثال زیر ، که به عنوان نمایش دهنده های کنترل سیگنال استفاده می شود ، ما همچنین از ماژول استاندارد کتابخانه Python استفاده می کنیم – ورود به سیستم و سطح ورود به سیستم را برای اشکال زدایی تنظیم می کنیم.

from mongoengine import *
from mongoengine import signals
import logging
logging.basicConfig(level=logging.DEBUG)

 

سپس یک کلاس سند می نویسیم تا مجموعه مربوطه در پایگاه داده newdb ایجاد شود. در داخل کلاس، دو روش ()pre_save  و ()post_save  تعریف شده اند که قرار است قبل و بعد از ذخیره شدن سندی در مجموعه نویسنده فراخوانی شوند.

class Author(Document):
   name = StringField()
   
   def __unicode__(self):
      return self.name

   @classmethod
   def pre_save(cls, sender, document, **kwargs):
      logging.debug("Pre Save: %s" % document.name)

   @classmethod
   def post_save(cls, sender, document, **kwargs):
      logging.debug("Post Save: %s" % document.name)
      if 'created' in kwargs:
         if kwargs['created']:
            logging.debug("Created")
         else:
            logging.debug("Updated")

 

همانطور که نمونه ای از زیر کلاس Document ایجاد می کنیم ، ورود به سیستم کنسول سیگنال های ذخیره قبل و بعد را که توسط کنترل کننده های رویداد مربوطه پردازش می شوند ، نشان می دهد.

signals.pre_save.connect(Author.pre_save, sender=Author)
signals.post_save.connect(Author.post_save, sender=Author)

 

کنسول پایتون گزارش گزارش را همانطور که در زیر نشان داده شده است –

DEBUG:root:Pre Save: Lathkar
DEBUG:root:Post Save: Lathkar
DEBUG:root:Created

 

منبع.

 

لیست جلسات قبل آموزش MongoEngine

  1. آموزش MongoEngine
  2. آموزش MongoDB در MongoEngine
  3. آموزش قطب نما MongoDB در MongoEngine
  4. آموزش نگاشت کننده اسناد شی در MongoEngine
  5. آموزش نصب MongoEngine
  6. آموزش اتصال به پایگاه داده MongoDB در MongoEngine
  7. آموزش کلاس Document در MongoEngine
  8. آموزش طرح پویا در MongoEngine
  9. آموزش کلاس Field در MongoEngine
  10. آموزش افزودن / حذف سند در MongoEngine
  11. آموزش استعلام پایگاه داده در MongoEngine
  12. آموزش فیلترها در MongoEngine
  13. آموزش عملگرهای Query در MongoEngine
  14. آموزش روش های QuerySet در MongoEngine
  15. آموزش مرتب سازی در MongoEngine
  16. آموزش مجموعه کوئری های سفارشی در MongoEngine
  17. آموزش نمایه ها در MongoEngine
  18. آموزش aggregation در MongoEngine
  19. آموزش جستجوی پیشرفته در MongoEngine
  20. آموزش جاوا اسکریپت در MongoEngine
  21. آموزش GridFS در MongoEngine
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه