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

در این مقاله الگوی جدول داده های پویا و نحوه استفاده از آن برای مدیریت اطلاعات با سهولت از طریق صفحه بندی ، جستجو و فیلترها بدون هیچ گونه تلاش برنامه نویسی توضیح داده شده است. برای تازه واردان ، برنامه نویسی پویا روشی برای حل مشکلات پیچیده با شکستن آنها به زیرزمین های ساده تر است.
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 را نشان می دهد.
صفحه آیتم آیتم با عنوان زیر نمایش داده می شود:
برای ورودی های بیشتر در مورد مفهوم ، در صورت پشتیبانی با تیم تماس بگیرید یا به سادگی کد را در سیستم محلی خود بارگیری و بازرسی کنید: