آموزش سیگنال ها در 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 استفاده می کنیم – ورود به سیستم و سطح ورود به سیستم را برای اشکال زدایی تنظیم می کنیم.
1 2 3 4 |
from mongoengine import * from mongoengine import signals import logging logging.basicConfig(level=logging.DEBUG) |
سپس یک کلاس سند می نویسیم تا مجموعه مربوطه در پایگاه داده newdb ایجاد شود. در داخل کلاس، دو روش ()pre_save و ()post_save تعریف شده اند که قرار است قبل و بعد از ذخیره شدن سندی در مجموعه نویسنده فراخوانی شوند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 ایجاد می کنیم ، ورود به سیستم کنسول سیگنال های ذخیره قبل و بعد را که توسط کنترل کننده های رویداد مربوطه پردازش می شوند ، نشان می دهد.
1 2 |
signals.pre_save.connect(Author.pre_save, sender=Author) signals.post_save.connect(Author.post_save, sender=Author) |
کنسول پایتون گزارش گزارش را همانطور که در زیر نشان داده شده است –
1 2 3 |
DEBUG:root:Pre Save: Lathkar DEBUG:root:Post Save: Lathkar DEBUG:root:Created |
لیست جلسات قبل آموزش MongoEngine
- آموزش MongoEngine
- آموزش MongoDB در MongoEngine
- آموزش قطب نما MongoDB در MongoEngine
- آموزش نگاشت کننده اسناد شی در MongoEngine
- آموزش نصب MongoEngine
- آموزش اتصال به پایگاه داده MongoDB در MongoEngine
- آموزش کلاس Document در MongoEngine
- آموزش طرح پویا در MongoEngine
- آموزش کلاس Field در MongoEngine
- آموزش افزودن / حذف سند در MongoEngine
- آموزش استعلام پایگاه داده در MongoEngine
- آموزش فیلترها در MongoEngine
- آموزش عملگرهای Query در MongoEngine
- آموزش روش های QuerySet در MongoEngine
- آموزش مرتب سازی در MongoEngine
- آموزش مجموعه کوئری های سفارشی در MongoEngine
- آموزش نمایه ها در MongoEngine
- آموزش aggregation در MongoEngine
- آموزش جستجوی پیشرفته در MongoEngine
- آموزش جاوا اسکریپت در MongoEngine
- آموزش GridFS در MongoEngine
دیدگاه شما