شروع به کار با Django و MySQL

این مقاله یک آموزش مقدماتی برای دوستان دولوپر بک اند که مایل هستندتا با Django، Mysql و DjangoRestFramework کار کنند نوشته شده. در اینجا من قصد دارم تا یک سیستم ساده برای ارتباط با پایگاه داده درست کنم که با API قادر به ارتباط با محیط بیرون خود است.نصب و راه اندازی جنگو و محیط مجازی پایتونشما می خواهید یک محیط توسعه ایجاد کنید که بتوانید آن را کنترل کنید. محیط های مجازی به شما کمک می کنند تمام بسته های مورد نیاز یک کار خاص توسعه را بدون نیاز به تأثیرگذاری بر سیستم پایه خود نصب کنید. همچنین به شما در مدیریت وابستگی ها هنگام استقرار برنامه کمک می کند. https://gist.github.com/moeinserpico/005d485e0c178cef397460b6b7a8ed2b#file-virtulaenv Django Project دایرکتوری اصلی پروژه است و Application ها یا برنامه ها درون پوشه پروژه قرار می گیرند. در یک پروژه می توانید برنامه های بسیاری داشته باشید. در این مقاله ، ما این پروژه را "backend" و برنامه را "employee_app" می نامیم.اتصال Django به Mysqlمعمولاً ، جنگو با استفاده از مدل ها پایگاه داده را مدیریت می کند. مدلهای جنگو نقشه‌هایی از پایگاه داده ها هستند که به شما کمک می کند حتی با دانش کمی از SQL با دیتابیس ارتباط برقرار کنید. حتی اگر از قبل هم پایگاه داده شما وجود داشته است جنگو به صورت اتوماتیک می تواند داده های قدیمی را به مدل تبدیل کند. من در این پروژه از این فایل SQL برای ساخت پایگاه داده کمک گرفتم. https://gist.github.com/moeinserpico/eb67b0b8a6ea499d8223bde941be1ad2#file-mysqlcreatedatabase پایگاه داده پیش فرض Django را از sqlite3 به MySQL تغییر دهیداکیدا از وارد کردن رمز عبور در فایل setting.py خودداری کنید. می توانید یک متغیر محیط ایجاد کرده و از فایل setting.py به آن دسترسی پیدا کنید https://gist.github.com/moeinserpico/aa953a7cd1ebd27f7574cbc6fa6ea829#file-envvar ویرایش فایل setting.py https://gist.github.com/moeinserpico/8c19cc9f53404eb71a068e48d4aabb2e#file-gistfile1-txt ایجاد مدلهای پایگاه داده با استفاده از InspectDbاگر دیتابیس از قبل دارید که داده ایی در آن وجود دارد ، جنگو به شما کمک می کند تا پایگاه داده را بررسی کند و به طور خودکار مدل های مربوطه را برای شما تولید نماید. https://gist.github.com/moeinserpico/476cf904cd6d042d9508c960d56705ec#file-gistfile1-txt قسمتی از مدلهای تولید شده در models.py: https://gist.github.com/moeinserpico/b6dd7a3c1ea2a588836788f1cdf58612#file-gistfile1-txt کارهای تکمیلی با استفاده از Makemigrations و Migrate: https://gist.github.com/moeinserpico/6d7ed1aa51e1453a324df590c3c1a1ca#file-gistfile1-txt در ادامه employee_app و restframework را در فایل setting.py در قسمت installed apps اضافه کنید: https://gist.github.com/moeinserpico/cdfe9bec5625f4de4f59f21a3041f6c4#file-gistfile1-txt مدیریت Rest API در جنگوجنگو داده های پایگاه داده را در قالب انواع داده های پیچیده مانند queryset ها تولید می کند. لازم است که این ساختارها به اشیاء پایتون تبدیل شوند تا بتوانند به عنوان اشیاء JSON یا XML در frontend قابل مصرف باشند.serializaer ها برای این منظور ایجاد شده اند.Serializerفایلی به اسم "serializers.py" در employee_app ایجاد کنید. برای هر مدل در پرونده model.py یک Serializer ایجاد کنید. djangorestframework انواع مختلفی از Serializer ها را دارد. در اینجا ما از کلاس ModelSerializer ارث می بریم و تمامی فیلدهای هر جدول را return می کنیم: https://gist.github.com/moeinserpico/3f3b99d5aca2a6154f26b83fab2da22c#file-gistfile1-txt قسمت ViewsView ها به کاربر کمک می کنند تا با استفاده از Viewset با پایگاه داده در تعامل باشند.ایده این است که query ایجاد کنید که داده ها را با استفاده از مدل ها از پایگاه داده بدست آورده ، سپس داده ها را از طریق Serializer قبل از اینکه به دید کاربر رسانه شود منتقل شوند.در هر view ما serializer که قرار است استفاده کنیم را تعریف کرده و به ساخت querysetکه مشخص کننده نوع و مقدار محتوای درخواستی ماست، می پردازیم.views.py را در employee_app ویرایش کنید. من نمایش داده های خود را به چند سطر محدود می کنم زیرا بانک اطلاعاتی حاوی داده های زیادی است. شما می توانید نماهای پیشرفته تری ایجاد کنید.. https://gist.github.com/moeinserpico/97cec4ea94b5631de967717a2e5f8d30#file-gistfile1-txt URL هاما از روترهای rest_framework ایجاد لینک های پویا در پروژه استفاده کرده ایم. تمام کاری که باید انجام شود رجیستر کردن view هاست.فایل urls.py را در پوشه پروژه ویرایش کنید: https://gist.github.com/moeinserpico/a3e5fb7b8c38c152ebf4619157ddfd4a#file-gistfile1-txt الان وقت آن رسیده که مدل ها رو در قسمت Admin Site رجیست کنیم. فایل admin.py در پوشه پروژه رو باز کرده و محتوی رو مثل زیر تغییر می دهیم: https://gist.github.com/moeinserpico/7381e0b0dba735dbdc1e02534b7fe2f6#file-gistfile1-txt تست برنامهبعد از اعمال تغییرات بالا سرور رو در پوشه بک اند راه اندازی می کنیم: https://gist.github.com/moeinserpico/9e18ddffa06bfa35d2052f97da8aa522#file-gistfile1-txt مرورگر رو باز کنید برید به http://127.0.0.1:8080/api. چیزی که باید ببینید: https://gist.github.com/moeinserpico/c9cc67d71624811eef317b30e2b25257#file-gistfile1-txt بر روی هر کدام از لینک ها که کلیک کنید داده های پایگاه داده بصورت JSON نمایش داده می شود.لیست حقوق ها('http://127.0.0.1:8000/api/saleries') https://gist.github.com/moeinserpico/bbe7e016c5e656f9508ed0566916c9fe#file-gistfile1-txt الان دیگر می توان با API ها به کمک جنگو و Mysql کار کرد.