شروع به کار با 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

قسمت Views

View ها به کاربر کمک می کنند تا با استفاده از 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 کار کرد.