برنامه نویسی

جداول داده های پویا در فلاسک

در این مقاله الگوی جدول داده های پویا و نحوه استفاده از آن برای مدیریت اطلاعات با سهولت از طریق صفحه بندی ، جستجو و فیلترها بدون هیچ گونه تلاش برنامه نویسی توضیح داده شده است. برای تازه واردان ، برنامه نویسی پویا روشی برای حل مشکلات پیچیده با شکستن آنها به زیرزمین های ساده تر است.

Free Sample that incorporates the concept: Flask Datta قادر (شامل لینک نسخه ی نمایشی)

الگوی جدول پویا در فلاسک/پایتون - نمای تولید شده با جستجو ، فیلترها و صادرات

بیایید ببینیم که چگونه مفهوم برنامه نویسی پویا در مورد جداول داده پویا اعمال می شود ، این راه حلی است که ما در این مقاله می خواهیم به آن برسیم.

جدول داده های داده

جداول داده نشان دهنده یک روش ساختاری برای سازماندهی و نمایش داده ها در ردیف ها و ستون ها با قابلیت های داخلی برای مدیریت مجموعه داده های بزرگ است. آن را به عنوان یک جدول پیشرفته که ارائه می دهد فکر کنید:

صفحه بندی

  • تجزیه مجموعه داده های بزرگ در صفحات کوچکتر و قابل کنترل
  • به کاربران اجازه می دهد تا بدون بارگیری همه چیز به یکباره از طریق داده ها حرکت کنند
  • به طور معمول سوابق X را در هر صفحه نشان می دهد (به عنوان مثال ، 10 ، 25 ، 50 مدخل)

سازمان داده ها

  • ردیف ها سوابق فردی را نشان می دهند
  • ستون ها ویژگی ها یا زمینه ها را نشان می دهند
  • هدرها ساختار را تعریف می کنند و می توانند مرتب سازی را فعال کنند

پردازش سمت مشتری

  • مناسب برای مجموعه داده های کوچک
  • همه سوابق یک بار در سمت مشتری کشیده می شوند
  • داده ها به صورت محلی در مرورگر یا برنامه تلفن پردازش می شوند

پردازش سمت سرور

  • پرس و جوهای پایگاه داده فقط سوابق مورد نیاز را واکشی می کنند
  • میزان مصرف حافظه را کاهش داده و عملکرد را بهبود می بخشد
  • مجموعه داده های بزرگ را به طور کارآمد کنترل می کند

هدف از تحقیقات ما ارائه ویژگی های فوق با استفاده از یک پیکربندی حداقل و فقط ویژگی های پویا پایتون است که می تواند داده ها را در زمان اجرا تشخیص و دستکاری کند. بیایید کار را به قطعات کوچکتر تقسیم کنیم و شروع به استفاده از اصول برنامه نویسی پویا در مورد استفاده خاص خود کنیم.

پیکربندی

کاربران باید بتوانند با استفاده از یک نحو ساده و بصری ، الگوی پویا را برای هر مدل فعال کنند. برای این کار می توانیم از نقشه ای استفاده کنیم که از URL به عنوان کلید استفاده می کند و مدل هدف را به عنوان مقدار.

DYNAMIC_DATATB = {
        "products": "apps.models.Product"
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تعریف فوق از “محصولات” مسیریابی برای ساخت جدول پویا برای مدل محصول تعریف شده در برنامه ها/models.py استفاده خواهد کرد

اکنون از مسیر مدل برای بارگیری کلاس مدل و تجزیه و تحلیل زمینه ها و نوع استفاده می شود.

تعریف مدل بارگذاری شده

مدل را می توان با استفاده از Importlib.import_module وت باکتری یاران به عنوان نمایش در زیر:

def name_to_class(name: str):
        module_name = '.'.join(name.split('.')[:-1])
        class_name = name.split('.')[-1] 

        module = importlib.import_module(module_name)
        return getattr(module, class_name)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر ما تماس بگیریم name_to_class () با apps.models.product ورودی ، ما باید Product Model Class بازگشت توسط getAttr () یاور

زمینه های کلاس/مدل

داشتن کلاس اولین قدم است. بعدی این است که همه زمینه ها ، انواع مرتبط و همچنین تمام کلیدهای خارجی را که به انواع خارجی نقشه برداری شده اند ، که هنوز نمی دانیم ، بدست آوریم.

زمینه های معمولی را می توان با استفاده از این کد از تعریف کلاس بیرون کشید:

db_fields = [field.name for field in aModelClass.__table__.columns if not field.foreign_keys] 
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

قطعه فوق تمام زمینه های تعریف شده با استفاده از انواع معمولی مانند عدد صحیح ، رشته ، DateTime و متن را برمی گرداند.

برای کشف کلید خارجی ، کد باید از ابرداده مدل استفاده کند که روابط دوردست را با سایر مدل ها ذخیره می کند. کدی که تمام FK های مرتبط را ارائه می دهد ، زیر است:

def get_model_fk_values(aModelClass):
    fk_values = {} 
    current_table_name = aModelClass.__tablename__
    for relationship in aModelClass.__mapper__.relationships:
        if relationship.direction.name == 'MANYTOONE':
            related_model = relationship.mapper.class_
            foreign_key_column = list(relationship.local_columns)[0]
            referenced_table_name = list(foreign_key_column.foreign_keys)[0].column.table.name

            if referenced_table_name != current_table_name:
                field_name = relationship.key
                related_instances = related_model.query.all()
                fk_values[field_name] = related_instances

    return fk_values
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پس از حل پرونده FKS ، چالش بعدی تشخیص عناصر استفاده شده توسط مدل برای نقشه برداری از اطلاعات در Combos است. بدون این تشخیص ، Enums به قسمت های ورودی نقشه برداری می شود و ممکن است در هنگام ایجاد یا بروزرسانی مشکلی داشته باشیم.

choices_dict = {}
for column in aModelClass.__table__.columns:
    if isinstance(column.type, db.Enum):
        choices_dict[column.name] = [(choice.name, choice.value) for choice in column.type.enum_class]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

قطعه کد فوق در قسمت های مدل تکرار می شود و تمام مقادیر را برای هر زمینه شناسایی شده به عنوان enum ذخیره می کند.

در این مرحله ، ما به موارد زیر رسیده ایم:

  • این مدل به طور خودکار با استفاده از بخش URI و نقشه برداری پیکربندی کشف می شود
  • اطلاعات زمینه (نام و نوع) همه موارد را در بر می گیرد: انواع ساده ، عناصر ، کلیدهای خارجی
  • این اطلاعات به پرونده های Jinja تزریق می شود تا به کاربر ارائه شود

نمای جدول پویا

صفحه ارائه شده توسط جدول Dynamic Data ، کنترل های معمول مانند جستجو را ارائه می دهد ، کنترل ستون های مخفی ، فیلترها و صادرات با فرمت CSV را نشان می دهد.

الگوی جدول پویا در فلاسک/پایتون - نمای تولید شده با جستجو ، فیلترها و صادرات

صفحه آیتم آیتم با عنوان زیر نمایش داده می شود:

الگوی جدول دینامیکی در فلاسک/پایتون - پنجره آیتم.

برای ورودی های بیشتر در مورد مفهوم ، در صورت پشتیبانی با تیم تماس بگیرید یا به سادگی کد را در سیستم محلی خود بارگیری و بازرسی کنید:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا