کتابخانه pydantic یکهمه کاره در validate!?
اگر قراره یک داده رو بصورت صفر تا صد validate کنید چه از لحاظ نوع داده که عدد باشه یا رشته یا حتی لیست یا دیکشنری باشه که داخلش مجموعه ای از استرینگ ها باشه
فیلد های داخل کلاس رو چک کنید مثلا پسورد و تکرار پسورد که هر کدوم ساختار خاصی داشته باشند مثل regix ها و ....
حتی پارامتری که به تابع پاس داده میشه رو میتونید با دکوریتوری که در اختیار میذاره قبل از پاسخ دادن چک کنه و اگه valid بود تازه پاس بده به تابع یا حتی نوع خروجی که تابع return میکنه رو چک کنه و کلی امکانات دیگه
یک مثال ساده
( pip install pydantic )ابتدا با دستور
کتابخانه رو نصب میکنید
حالا میخایم یک کلاس بسازیم که نام و شماره دانشجویی فرد رو بگیره و نوعش رو چک کنه
from pydantic import BaseModel
class NameValid(BaseModel):
name : str
number : int
user1 = NameValid (name="ali" , number = 12345 )
print(user1)
اگر همه چیز درست باشه دقیقا داده ها رو بهتون برمی گردونه اما اگه تایپ ها اشتباه باشه ValidationError برمی گردونه که میتونید با try و except مدیریتش کنید
داده های پاس داده شده میتونند بصورت Json باشند که در وب خیلی زیاد ازشون استفاده میشه
#M_Sh
@persians_python
اگر قراره یک داده رو بصورت صفر تا صد validate کنید چه از لحاظ نوع داده که عدد باشه یا رشته یا حتی لیست یا دیکشنری باشه که داخلش مجموعه ای از استرینگ ها باشه
فیلد های داخل کلاس رو چک کنید مثلا پسورد و تکرار پسورد که هر کدوم ساختار خاصی داشته باشند مثل regix ها و ....
حتی پارامتری که به تابع پاس داده میشه رو میتونید با دکوریتوری که در اختیار میذاره قبل از پاسخ دادن چک کنه و اگه valid بود تازه پاس بده به تابع یا حتی نوع خروجی که تابع return میکنه رو چک کنه و کلی امکانات دیگه
یک مثال ساده
( pip install pydantic )ابتدا با دستور
کتابخانه رو نصب میکنید
حالا میخایم یک کلاس بسازیم که نام و شماره دانشجویی فرد رو بگیره و نوعش رو چک کنه
from pydantic import BaseModel
class NameValid(BaseModel):
name : str
number : int
user1 = NameValid (name="ali" , number = 12345 )
print(user1)
اگر همه چیز درست باشه دقیقا داده ها رو بهتون برمی گردونه اما اگه تایپ ها اشتباه باشه ValidationError برمی گردونه که میتونید با try و except مدیریتش کنید
داده های پاس داده شده میتونند بصورت Json باشند که در وب خیلی زیاد ازشون استفاده میشه
#M_Sh
@persians_python
👍5
پایتون فارسی(PyCore)
کتابخانه pydantic یکهمه کاره در validate!? اگر قراره یک داده رو بصورت صفر تا صد validate کنید چه از لحاظ نوع داده که عدد باشه یا رشته یا حتی لیست یا دیکشنری باشه که داخلش مجموعه ای از استرینگ ها باشه فیلد های داخل کلاس رو چک کنید مثلا پسورد و تکرار پسورد…
امروز ۶ میلیون نفر pydantic رو دانلود کردن! pydantic تبدیل به یکی از پر استفاده ترین پکیج های پایتونی شده و در حال حاضر معدود پکیج هایی فقط بالاتر از pydantic هستند مثل numpy با ۹ میلیون دانلود روزانه. این در حالیه که fastapi فقط یک میلیون دانلود داشته. این آمار و ارقام نشون میده pydantic کامل وارد اکوسیستم پایتون شده و تو انواع پروژه ها استفاده میشه.
حتی در پروژه های drf (django-rest-framework) هم بعضی ها به جای استفاده از از drf serializer از pydntic استفاده میکنن!
حالا چرا !؟ چون سرعت خیلی بالاتری نسبت به سریالایزر drf داره
مقاله های که این کار رو توضیح دادن زیادن، ولی خب اومدن یه پکیج واسطه استفاده کردن، ولی شما میتونی هم مستقیم آبجکت مدل جنگو رو با پایدانتیک سریالایز کنی.
مقاله اول
مقاله دوم
#pydantic
#Serializer
#mahyar
حتی در پروژه های drf (django-rest-framework) هم بعضی ها به جای استفاده از از drf serializer از pydntic استفاده میکنن!
حالا چرا !؟ چون سرعت خیلی بالاتری نسبت به سریالایزر drf داره
مقاله های که این کار رو توضیح دادن زیادن، ولی خب اومدن یه پکیج واسطه استفاده کردن، ولی شما میتونی هم مستقیم آبجکت مدل جنگو رو با پایدانتیک سریالایز کنی.
مقاله اول
مقاله دوم
#pydantic
#Serializer
#mahyar
Obytes
Integrate Pydantic with Django and Django REST Framework | Obytes
Pydantic is a Pythonic data validation library that makes it easy to create data models and validate data.
👍5
پایتون فارسی(PyCore)
خب بیاید با یک پروژه ساده پیش بریم دایرکتوری کاری ما به شکل زیر خواهد بود Plbenchmark-test ├── src │ └── sorting_examples.py └── test ├── conftest.py └── test_benchmark.p توضیحات در داخل فایل sorting_example.py سه الگوریتم مرتب سازی قرار دادیم…
در ادامه مبحث بنچمارکینگ روی یک پروژه جنگویی پیاده سازی میکنیم و در نهایت با تست عملکرد برای ویوهای ساخته شده با FBV ,CBV بررسی میکنیم عملکرد و محک زدن کدوم بهتره.(Class base view, function base view)
ابتدا یک پروژه جنگویی همراه یک اپ core ایجاد میکنیم
models.py
الزامات مربوط به templates در settings و فایلهای list.html , detail.html رو برای اپ core بصورت ساده انجام دهید
جهت راه اندازی بنچمارکینگ نیاز به نصب سه کتابخانه داریم
در دایرکتوری root پروژه یک فایل با نام pytest.ini ساخته کدهای زیر رو در ان قرار دهید
دلیل اینکار ازین بابت هست که بخشی از کدهای ما وابسته به اجرا شدن پروژه جنگویی میباشد و اجرا کردن پروژه جنگویی با صدا زدن فایل تنظیمات آن میباشد و به این صورت pytest اینکار رو انجام میدهد
دایرکتوری tests ساخته و داخل ان فایل test_view.py رو میسازیم و کدهای زیر رو داخل اون میزاریم
دستورات زیر رو در خط فرمان بزنید
خروجی بنچمارکینگ و تست عملکرد رو برای ویوهای FBV و CBV در جنگو رو باهم میتونید مقایسه کنید
#monitoring
#mahyar
ابتدا یک پروژه جنگویی همراه یک اپ core ایجاد میکنیم
pip install djangoدر دایرکتوری config
django-admin startproject config .
python manage.py startapp core
فایل settings.pyدر اپ core کدهای زیر رو وارد میکنیم
INSTALLED_APPS = [
...
"core",
]
فایل urls.py
path('', include('core.urls')),
models.py
class CategoryModel(models.Model):views.py
title = models.CharField(max_length=255)
from django.views.generic import DetailView, ListViewurls.py
from .models import CategoryModel
def category_list_view(request):
objs = CategoryModel.objects.all()
return render(request, 'core/list.html', {"objs":objs})
def category_detail_view(request, pk):
obj = CategoryModel.objects.get(id=pk)
return render(request, 'core/detail.html', {"obj":obj})
class CategoryListView(ListView):
model = CategoryModel
template_name = 'core/list.html'
context_object_name = 'objs'
class CategoryDetailView(DetailView):
model = CategoryModel
template_name='core/detail.html'
context_object_name = 'obj'
from .views import category_list_view, category_detail_view, CategoryDetailView, CategoryListViewدستورات makemigrations و migrate رو فراموش نکنید
app_name = 'core'
urlpatterns = [
path('fbv/', category_list_view),
path('fbv/<pk>/', category_detail_view),
path('cbv/', CategoryListView.as_view()),
path('cbv/<pk>/', CategoryDetailView.as_view()),
]
الزامات مربوط به templates در settings و فایلهای list.html , detail.html رو برای اپ core بصورت ساده انجام دهید
جهت راه اندازی بنچمارکینگ نیاز به نصب سه کتابخانه داریم
pip install pytest pytest-benchmark pytest-django
در دایرکتوری root پروژه یک فایل با نام pytest.ini ساخته کدهای زیر رو در ان قرار دهید
[pytest]
DJANGO_SETTINGS_MODULE = config.settings
دلیل اینکار ازین بابت هست که بخشی از کدهای ما وابسته به اجرا شدن پروژه جنگویی میباشد و اجرا کردن پروژه جنگویی با صدا زدن فایل تنظیمات آن میباشد و به این صورت pytest اینکار رو انجام میدهد
دایرکتوری tests ساخته و داخل ان فایل test_view.py رو میسازیم و کدهای زیر رو داخل اون میزاریم
import pytest
from core.models import CategoryModel
from django.test import RequestFactory
from core.views import category_list_view, category_detail_view, CategoryListView, CategoryDetailView
@pytest.fixture
def rf():
return RequestFactory()
@pytest.mark.fbv
def test_fbv_list(benchmark, rf):
request = rf.get('/fbv/')
result = benchmark(category_list_view, request)
assert result.status_code == 200
@pytest.mark.fbv
@pytest.mark.django_db
def test_fbv_detail(benchmark, rf):
blog_comment = CategoryModel.objects.create(title='Test')
request = rf.get(f'/fbv/{blog_comment.pk}/')
result = benchmark(category_detail_view, request, pk=blog_comment.pk)
assert result.status_code == 200
@pytest.mark.cbv
def test_cbv_list(benchmark, rf):
request = rf.get('/cbv/')
view = CategoryListView.as_view()
result = benchmark(view, request)
assert result.status_code == 200
@pytest.mark.cbv
@pytest.mark.django_db
def test_cbv_detail(benchmark, rf):
blog_comment = CategoryModel.objects.create(title='Test')
request = rf.get(f'/cbv/{blog_comment.pk}/')
view = CategoryDetailView.as_view()
result = benchmark(view, request, pk=blog_comment.pk)
assert result.status_code == 200
دستورات زیر رو در خط فرمان بزنید
pytest -m cbv --benchmark-autosave
pytest -m fbv --benchmark-autosave
pytest-benchmark compare 0001 0002
خروجی بنچمارکینگ و تست عملکرد رو برای ویوهای FBV و CBV در جنگو رو باهم میتونید مقایسه کنید
#monitoring
#mahyar
👍5👎1
سلام به همگی
از فردا کلاس ها طبق ساعت های که بوده برگزار میشه لطفاً کسی غیبت نداشته باشه که از مباحث جا بمونه
از فردا کلاس ها طبق ساعت های که بوده برگزار میشه لطفاً کسی غیبت نداشته باشه که از مباحث جا بمونه
👍3
Django rich-text editors.pdf
502.3 KB
معرفی انواع ویرایشگر های متن (rich-text editor) در جنگو
خیلی پیش میاد در پروژه هایی که مبتنی بر render یا django templateهستش بخواید از یک ویرایشگر متن خیلی خوب برای تولید محتوا استفاده کنین.
تمام ویرایشگر های متنی خصوصیت های مشترکی دارن منتهی بعضی هاشون توی ساز و کار جنگو بهتون قابلیت آپلود عکس و در کل کار با media ها رو هم فراهم می کنن و جایگاهشون خاص تر میشه.
البته شما می تونین بدون استفاده از این ماژول ها هم بر حسب نیازتون به صورت مستقیم از این ها ساتفاده کنین ولی خوب باید تنظیمات متفاوتی رو درش اعمال کنین که معمولا زمان بر هستش. از جمله ویرایشگر های جنگو میشه به این ها اشاره کرد، البته فقط محدود به این ها نیستن:
django-ckeditor - django-froala-editor - django-summernote - django-quill - django-tinymce
البته که جنگو محدود به این ها نیستش و می تونین ماژول های متفاوتی هم توسعه بدید و یا پیدا کنین ولی این ماژول ها جزو پر مصرف ترین ها به شمار میان.
انتخاب خودم:
من به شخصه بیشتر از ckeditor استفاده می کنم به خصوص اینکه پشتیبانی از آپلود فایل رو هم داره
مبنع
#djnago
#mahyar
خیلی پیش میاد در پروژه هایی که مبتنی بر render یا django templateهستش بخواید از یک ویرایشگر متن خیلی خوب برای تولید محتوا استفاده کنین.
تمام ویرایشگر های متنی خصوصیت های مشترکی دارن منتهی بعضی هاشون توی ساز و کار جنگو بهتون قابلیت آپلود عکس و در کل کار با media ها رو هم فراهم می کنن و جایگاهشون خاص تر میشه.
البته شما می تونین بدون استفاده از این ماژول ها هم بر حسب نیازتون به صورت مستقیم از این ها ساتفاده کنین ولی خوب باید تنظیمات متفاوتی رو درش اعمال کنین که معمولا زمان بر هستش. از جمله ویرایشگر های جنگو میشه به این ها اشاره کرد، البته فقط محدود به این ها نیستن:
django-ckeditor - django-froala-editor - django-summernote - django-quill - django-tinymce
البته که جنگو محدود به این ها نیستش و می تونین ماژول های متفاوتی هم توسعه بدید و یا پیدا کنین ولی این ماژول ها جزو پر مصرف ترین ها به شمار میان.
انتخاب خودم:
من به شخصه بیشتر از ckeditor استفاده می کنم به خصوص اینکه پشتیبانی از آپلود فایل رو هم داره
مبنع
#djnago
#mahyar
👍4
انشالله در آینده یکم دوباره میریم سمت پایتون، تا بچه های دوره پایتون هم بتونن از مطالب استفاده کنن و کانال براشون مفید باشه.
همچنین اگر دوست دارید راجب موضوع خاصی از پایتون پست بزاریم و درموردش بیشتر حرف بزنیم توی کامنت بگید.
#mahyar
همچنین اگر دوست دارید راجب موضوع خاصی از پایتون پست بزاریم و درموردش بیشتر حرف بزنیم توی کامنت بگید.
#mahyar
👍4
موردی که ممکنه در آینده بدرد خودتون یا اطرافیان تون بخوره
قطعا اگر این مسیر رو ادامه بدید بدردتون میخوره
https://virgool.io/applymag/%DA%86%D8%B7%D9%88%D8%B1-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%D9%87-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A8%D8%A7-%DB%B3%DB%B0%DB%B0-%DB%8C%D9%88%D8%B1%D9%88-%D8%AA%D9%88-%D8%A7%D8%B1%D9%88%D9%BE%D8%A7-%D8%B4%D8%B1%DA%A9%D8%AA-%D8%AB%D8%A8%D8%AA-%DA%A9%D9%86%DB%8C%D9%85-ubgyakdugueb
#M_Sh
@persians_python
قطعا اگر این مسیر رو ادامه بدید بدردتون میخوره
https://virgool.io/applymag/%DA%86%D8%B7%D9%88%D8%B1-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%D9%87-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A8%D8%A7-%DB%B3%DB%B0%DB%B0-%DB%8C%D9%88%D8%B1%D9%88-%D8%AA%D9%88-%D8%A7%D8%B1%D9%88%D9%BE%D8%A7-%D8%B4%D8%B1%DA%A9%D8%AA-%D8%AB%D8%A8%D8%AA-%DA%A9%D9%86%DB%8C%D9%85-ubgyakdugueb
#M_Sh
@persians_python
ویرگول
چطور به عنوان یه ایرانی با ۳۰۰ یورو تو اروپا شرکت ثبت کنیم؟
اگر شما برنامه نویس هستید و تو ایران (یا هرجای دیگه دنیا) زندگی میکنید ممکنه دنبال شغل ریموت از بقیه دنیا یا حتی ایدهای جهانی دارید ولی از…
👍2👎1
پایتون فارسی(PyCore)
۳۰ شرکت بزرگ دنیا که از پایتون استفاده می کنند #M_Sh @persians_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#SADRA_K
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
توابع مفید پایتونی🔥
این قسمت: لامبدا🥸
لامبدا در پایتون به عنوان یک ابزار بسیار قدرتمند استفاده میشود که به شما این امکان را میدهد که توابع کوتاه و مفیدی را در یک خط کد تعریف کنید. گاهی اوقات به آن به عنوان توابع ناشناخته یا توابع بدون نام هم اشاره میشود.
لامبداها معمولاً در جاهایی استفاده میشوند که نیاز به تعریف یک تابع کوتاه و موقت دارید، بدون اینکه نیازی به تعریف یک تابع کامل باشد.
برای تعریف یک لامبدا در پایتون، از واژه کلیدی
در اینجا:
-
-
برای مثال، اگر بخواهیم یک تابع لامبدا بنویسیم که دو عدد را جمع کند، کد زیر را میتوانیم بنویسیم:
در این مثال،
#lambda
#mahyar
این قسمت: لامبدا🥸
لامبدا در پایتون به عنوان یک ابزار بسیار قدرتمند استفاده میشود که به شما این امکان را میدهد که توابع کوتاه و مفیدی را در یک خط کد تعریف کنید. گاهی اوقات به آن به عنوان توابع ناشناخته یا توابع بدون نام هم اشاره میشود.
لامبداها معمولاً در جاهایی استفاده میشوند که نیاز به تعریف یک تابع کوتاه و موقت دارید، بدون اینکه نیازی به تعریف یک تابع کامل باشد.
برای تعریف یک لامبدا در پایتون، از واژه کلیدی
lambda استفاده میشود. سینتکس کلی آن به صورت زیر است:lambda arguments: expressionدر اینجا:
-
arguments: ورودیهای تابع به صورت آرگومانها مشخص میشوند.-
expression: عبارتی که تابع باید انجام دهد.برای مثال، اگر بخواهیم یک تابع لامبدا بنویسیم که دو عدد را جمع کند، کد زیر را میتوانیم بنویسیم:
add = lambda x, y: x + y
print(add(3, 5)) # Output: 8
در این مثال،
lambda x, y: x + y یک تابع لامبدا است که دو آرگومان x و y را میگیرد و جمع آنها را برمیگرداند. توابع لامبدا به صورت پیشفرض خروجی تابع را return میکنند پس برای استفاده باید آنهارا پرینت کنید.#lambda
#mahyar
👍4👌1