پای‌دانتیکپای‌دانتیکپای‌دانتیک
  • صفحه اصلی
  • اخبار
  • آموزش
  • تجربه
  • نقشه راه
  • فریمورک
    • django
    • fastapi
خواندن: کد تقلب جنگو(Django)
اشتراک گذاری
ورود
0

هیچ محصولی در سبد خرید نیست.

اعلان نمایش بیشتر
تغییردهنده سایز فونتAa
پای‌دانتیکپای‌دانتیک
0
تغییردهنده سایز فونتAa
Search
  • صفحه اصلی
  • آموزش
  • اخبار
  • تجربه
  • نقشه راه
  • فریمورک
    • django
    • fastapi
Have an existing account? ورود
ما را دنبال کنید
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
پای‌دانتیک > فریمورک > django > کد تقلب جنگو(Django)
django

کد تقلب جنگو(Django)

afshin azizzadeh
آخرین به روز رسانی: آبان 18, 1402 9:24 ق.ظ
afshin azizzadeh
اشتراک گذاری
10 دقیقه زمان مطالعه
کد تقلب جنگو(Django)
کد تقلب جنگو(Django)
اشتراک گذاری

من همیشه می خواستم بعد از چند سال پیش که Flask را امتحان کردم، جنگو را تجربه کنم. پس از چند آزمایش اولیه برای ساختن یک ابزار جستجو برای مزارع خورشیدی (باطن جنگو، پیش‌انتخاب واکنش)، من فکر می‌کنم جنگو یک انتخاب بهینه برای ساخت سریع API از مدل‌های داده است. با PostgreSQL و برنامه های کاربردی مبتنی بر پایگاه داده عالی کار می کند.

Contents
زمینهCheatsheet & Snippetsراه اندازی و نصبسرور، migration و غیره را اجرا کنیدادمین جنگومدل های دادهچارچوب Django REST (DRF)ثبت نماهای DRF به عنوان نقاط پایانیModelViewSetAPIViewCORSپایگاه دادهتولید با Herokuاجرای اسکریپت های یکبارهنمونه گردش کار برای ساخت REST API با جنگو

در زیر یک cheatsheet است که من هنگام ساختن برنامه آزمایشی خود گردآوری کردم – امیدوارم مفید باشد و به من اطلاع دهید که چه چیزی کم است!

زمینه

جنگو یک چارچوب وب مبتنی بر پایتون است که از الگوی Model-View-Template پیروی می کند، که در آن:

Model رابط به داده های شما است. ساختار منطقی پشت برنامه و نشان داده شده توسط یک DB

View رابط کاربری است. هر آنچه که مرورگر شما از طریق HTML/CSS/JS ارائه می دهد

Template فایلی است که ساختار یا چیدمان رابط کاربری را تعریف می کند

به طور کلی، جنگو به عنوان سریع، ایمن، مقیاس‌پذیر شناخته می‌شود و با باتری‌هایی همراه است (تأیید هویت کاربر، مدیریت محتوا و غیره). این توسط ناشران روزنامه مانند واشنگتن پست، پیاز، NYT و برنامه هایی مانند فایرفاکس، کلاب هاوس، اینستاگرام، پینترست، ایونتبریت، دورداش و رابینهود استفاده می شود.

چارچوب Django REST ساخت CRUD API را بسیار آسان می کند. چون از دیدگاه‌های کلاسی جنگو پیروی می‌کند، سریال‌سازی را آسان‌تر می‌کند. به طور کلی، یک جعبه ابزار عالی برای ساختن API های RESTful.

Cheatsheet & Snippets

راه اندازی و نصب

یک محیط مجازی ایجاد کنید

python3 -m venv <name>

venv را فعال کنید

source venv/bin/activate

django را نصب کنید

pip install django

یک پروژه ایجاد کنید

django-admin startproject <name> .

یک برنامه در پروژه ایجاد کنید

django-admin startapp <name>

به یاد داشته باشید که پس از ایجاد برنامه، آن را به فایل settings.py در زیر INSTALLED_APPS اضافه کنید

سرور، migration و غیره را اجرا کنید

سرور را راه اندازی کنید

python3 manage.py runserver

migration را ایجاد کنید

python3 manage.py makemigrations

مهاجرت را اجرا کنید

python3 manage.py migrate

توجه: همیشه پس از ایجاد تغییرات در مدل‌های داده، makemigrations و سپس migrate را اجرا کنید

ادمین جنگو

کنسول مدیریت برای بررسی داده ها، کاربران، apis و غیره خوب است. معمولاً در localhost:8000/admin

نیاز به ایجاد یک لاگین برای کنسول مدیریت:

python3 manage.py createsuperuser

می‌توانید با به‌روزرسانی فایل admin.py، کنسول مدیریت را سفارشی کنید

مدل های داده

1.هنگامی که مدل های جدید ایجاد می کنید

2.مدل ها را در models.py تعریف کنید

3.سریال ساز را در serializers.py به روز کنید

آنها را در admin.py ثبت کنید. فایل admin.py باید به‌روزرسانی شود تا مدل‌های جدید در کنسول مدیریت نمایش داده شوند.

نمونه ای از روابط یک به چند: کتابی با شخصیت های متعدد

«کودک» مانند شخصیت های یک کتاب، باید از طریق کلید خارجی به والدین اشاره کند:

book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='characters')

وقتی مدل‌ها را از یک دایرکتوری وارد می‌کنید، ممکن است مجبور شوید از .models import … انجام دهید تا از import models …

برای گزینه های فیلد برای مدل های داده اینجا را ببینید.

چارچوب Django REST (DRF)

نصب و راه اندازی:

pip install djangorestframework

rest_framework را به لیست INSTALLED_APPS در settings.py اضافه کنید

برای به دست آوردن یک نشانه تأیید، http://localhost:8000/auth/ (POST) را با پارامترهای نام کاربری و رمز عبور برای یک کاربر خاص ضربه بزنید. برای تنظیم مجوزها، این را به settings.py اضافه کنید

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

این را به نمای مجموعه در views.py اضافه کنید: authentication_classes = (TokenAuthentication، )

به این ترتیب، تنها افرادی که دارای یک توکن احراز هویت هستند می توانند داده ها را ببینند.

ثبت نماهای DRF به عنوان نقاط پایانی

در DRF انواع مختلفی از نماها وجود دارد. پرکاربردترین آنها عبارتند از:

نماهای مبتنی بر کلاس که کلاس APIView را گسترش می دهد

ModelViewSet

نماهای عمومی که از نزدیک به مدل‌های DB نگاشت می‌شوند، که در بالای APIViws ساخته شده‌اند

اطلاعات بیشتر در مورد نماهای DRF در اینجا

ModelViewSet

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

APIView

به طور معمول GET، POST را بر اساس پرس و جو دریافتی مدیریت می کند. برای مثال، برای ایجاد نمای نویسنده بر اساس جدول Books:

نویسندگان کلاس (APIView):

class Authors(APIView):
    renderer_classes = [JSONRenderer]
    
    # return all the unique authors of books
    def get(self, request):
        authors = Books.objects.order_by().values('author').distinct()
        return Response(states)

در api/urls.py، دو View به طور متفاوتی ثبت می شوند. یکی از طریق روتر، دیگری در مسیر (زیرا نمی توانید نماهای عمومی را در روترها اضافه کنید)

from django.urls import path, include
from rest_framework import routers
from .views import BookViewSet, Authors

router = routers.DefaultRouter()
# ModelViewSet
router.register('books', BookViewSet)
urlpatterns = [
    path('', include(router.urls))
   # APIView
    path('authors/', Authors.as_view(), name="authors")
]

CORS

برای اجازه دادن به یک برنامه frontend برای درخواست API در جنگو لازم است

نصب django-cors-headers: https://github.com/adamchainz/django-cors-headers

settings.py INSTALLED_APPS را به روز کنید و آن را به MIDDLEWARE اضافه کنید

همچنین CORS_ALLOWED_ORIGINS را در settings.py اضافه کنید، که باید علاوه بر لوکال هاست، آدرس برنامه frontend را نیز شامل شود.

پایگاه داده

پیش فرض sqlite است. برای تغییر به postgres، settings.py را به روز کنید (بیشتر)

dj_database_url را نصب کنید

psycopg2 را نصب کنید

برای استفاده از Postgres، settings.py را به روز کنید:

from dj_database_url import parse as dburl

# this replaces the initial default for the local db
default_dburl = 'postgres://localhost/<dbname>'

DATABASES = {
    'default': config('DATABASE_URL', default=default_dburl, cast=dburl),
}

به یاد داشته باشید که کاربر را با دستور createuser دوباره ایجاد کنید

تولید با Heroku

1.نصب pip install python-decouple

2.یک فایل .env ایجاد کنید و SECRET_KEY را از settings.py به بالا منتقل کنید

3.pip install dj-database-url را نصب کنید و مسیر DB را در settings.py به روز کنید

4.pip install dj-static را نصب کنید، wsgi.py را برای استفاده از Cling به روز کنید

from dj_static import Cling from django.core.wsgi import get_wsgi_application  os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<project>.settings")  application = Cling(get_wsgi_application())

5. pip freeze > requires-dev.txt را اجرا کنید

6. requires.txt را برای heroku ایجاد کنید که شامل require-dev.txt و موارد دیگر است

-r requirements-dev.txt 
gunicorn 
psycopg2

7. یک پروفایل ایجاد کنید

web: gunicorn <project>.wsgi --log-file -

8. runtime.txt را ایجاد کنید و آخرین نسخه پایتون را که توسط heroku پشتیبانی می شود وارد کنید

9. پس از اعمال تغییرات، از داشبورد، cli یا ادغام خودکار github، با Heroku مستقر شوید

10. مانیتور سیاهههای مربوط با هیروکو سیاهههای مربوط –tail -a <پروژه>

اجرای اسکریپت های یکباره

django-extensions و userunscript را نصب کنید

python3 manage.py runscript <script.py>

نمونه گردش کار برای ساخت REST API با جنگو

1.یک دایرکتوری برای پروژه ایجاد کنید

2.شروع پایتون venv

3.django, djangorestframework را نصب کنید

4.شروع پروژه جنگو

5.django-admin startproject برای پروژه

6.-admin startapp برای برنامه

7.سرور را با python3 manager.py runserver راه اندازی کنید

8.مهاجرت ها را با python manager.py migrate اجرا کنید

9.urls.py را به روز کنید (در صورت وجود، یک برنامه جدید برای برنامه جدید خود در مرحله 6 ایجاد کنید)

urlpatterns = [
  path("admin/", admin.site.urls),
  path("api/", include('api.urls')), 
]

10. تنظیمات.py را به‌روزرسانی کنید تا rest_framework و api (پروژه جدید) را در INSTALLED_APPS اضافه کنید.

11. ایجاد superuser با python3 [manage.py](<http://manage.py>) createsuperuser

12. مسیریابی: در urls.py برنامه خود، از روترهای وارداتی rest_framework انجام دهید

13. مدل های داده را در models.py تعریف کنید

14. python3 manager.py makemigrations را اجرا کرده و مهاجرت کنید. اگر با مشکلاتی مانند عدم شناسایی تغییرات مواجه شدید، python3 makemigrations <app name> را اجرا کنید

15. سریال سازها را برای مدل های داده در serializers.py تنظیم کنید

16. با استفاده از سریال سازها نماها ایجاد کنید (views.py)

17. Viewset ها را در روتر خود ثبت کنید (urls.py)

18. متدهای سفارشی API را اضافه کنید. به عنوان مثال، تماس های POST را در views.py تعریف کنید

منبع مطلب

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
این مقاله را به اشتراک بگذارید
Facebook Twitter Copy Link Print
اشتراک گذاری
مقاله قبلی آموزش ساخت اپلیکیشن با sqlalchemy + postgres + docker آموزش ساخت اپلیکیشن با sqlalchemy + postgres + docker
مقاله بعدی 10 الگوی رایج pydantic 10 الگوی رایج pydantic
پیام بگذارید پیام بگذارید

دیدگاهتان را بنویسید لغو پاسخ

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

همه دسته بندی ها

  • django
  • fastapi
  • آموزش
  • اخبار
  • تجربه
  • دسته‌بندی نشده
  • نقشه راه
پای‌دانتیکپای‌دانتیک
ما را دنبال کنید
قالب فاکسیز فارسی شده توسط تیم راستچین 2023
Welcome Back!

Sign in to your account