جنگولرن
3.82K subscribers
287 photos
74 videos
31 files
556 links
آموزش Django و بستگان
Download Telegram
پیشگیری از XSS در جنگو 📖

در ادامه پست قبل که درباره حمله های XSS نکاتی رو گفته بودم، نکاتی که به ذهنم میرسه تا از این حمله تا حد ممکن پیشگیری کنیم رو با شما به اشتراک میگذارم، خوشحال میشم اگر مواردی که از قلم انداختم را با من با اشتراک بگذارید.

1- هر ورودی از کاربر باید تمیز بشه.
2- استفاده از safe_string ها را چک کرده به حداقل برسونید، استفاده از اپ هایی مانند django-bleach هم میتونه کمک کنه.
3- موقع طراحی model، serializer و forms از مناسب‌ترین (خاص ترین) نوع فیلد و داده استفاده کنید. اینطوری جنگو میتونه در validation و cleaning کمک تون کنه و قابلیت‌های بیشنری در اختیار تون بگذره.

django-bleach docs:
https://lnkd.in/ezCsMdgk

Django's docs on HTML untilities:
https://lnkd.in/e6qmfnVn

Django model field types:
https://lnkd.in/ee4nTweu

لینک پست پیشین:
https://lnkd.in/erigx6C5

تشکر از @alireza_amouzadeh
👍7👎1
فراخوان جذب رایگان مدرس 😂

سلام به همه
برای دوره رایگان برنامه نویسی از پایه (از کامپیوتر چیست تا طراحی سایت)
نیاز به کمک دارم. تا الان 31 قسمت منتشر شده.
توی این دوره قراره علاوه بر پایتون و جنگو و جنگو رست، اینهارو هم یاد بدم: html, css, javascript, bootstrap , git و خیلی چیزای دیگه
حتی شاید سمت اصول سالید و کلین کد و دیزاین پترن و نکات رزومه نویسی، سفته دادن 😂 و مهارت های دیگه که به برنامه نویسی ارتباط داره هم برم
✔️ لکن من توی بعضی هاشون مبتدی هستم و وقتی چیزی رو تسلط ندارم آموزشش هم مبتدی خواهد بود.
میخوام که هر کسی آمادگی داره که css, bootstrap , javascript و... رو (رایگان) تدریس کنه بهم پیام بده و با هم آموزش بسازیم.
به آیدی @miladhzz پیام بدید لطفا
👍7👎4
✔️ سوال: best practice‌ها و ابزارات مورد نیاز برای توسعه یه بسته، لایبرری یا نرم‌افزار پایتونی چیه؟

ابزارهای زیادی واسه این‌کارا وجود داره که بر اساس تجربه و چیزی که از 80 درصد پروژه های معروف و بزرگ دیدم، سعی میکنم بهتریناش رو معرفی کنم:


Dependency Management System

برای مدیریت وابستگی های یک پروژه بزرگ (یا نسبتا بزرگ)، پیشنهاد میکنم از Poetry استفاده کنید، چون ابزار بسیار قدرتمندی هست، کار باهاش بسیار راحته (خیلی شبیه به Cargo در زبان Rust هست)، کامیونیتی بزرگی داره، به راحتی محیط dev و prod رو میتونید مدیریت کنید، مستندات بسیار خوب و روانی داره، در سریع ترین زمان ممکن میتونید پروژه رو در PyPI منتشر کنید و همچنین پروژه⁧های معروفی از جمله Rich (کتابخونه⁧ای که خود pip هم ازش برای رنگی کردن progress barها استفاده میکنه) از اون استفاده میکنن، که همین نشون میده چقدر کاربردی هست.
مواردی از جمله build و run هم کاملا با Poetry انجام میشن.

- منابع آموزشی:

1. آشنایی و شروع به کار با Poetry
https://realpython.com/dependency-management-python-poetry/

2. جزیات عمیق درباره هر قابلیت و نحوه استفاده
https://python-poetry.org/docs

3. نحوه انتشار یک package پایتونی در PyPI به کمک Poetry
https://johnfraney.ca/blog/create-publish-python-package-poetry/


Linting & Type Checking

برای Linting ابزارهای flake8 و pylint از معروف ترین⁧ها هستن، هر یک رو میتونید شدت سخت گیریشون رو تنظیم کنید، به راحتی همراه با Poetry تنظیماتشون در یک فایل قرار میگیره و نیاز به نگه داشتن فایل⁧های متفاوت برای هر کدوم ندارید. به نظرم خود flake8 به تنهایی نیازتون رو برطرف میکنه. اگر از PyCharm استفاده کنید یک Linter به صورت Built-in در اختیارتون میذاره که خوبه و کارتون رو راه میندازه.

اگر عادت دارید کدهای خودتون رو Annotate کنید و زیاد از Type Hint ها استفاده میکنید، استفاده از MyPy به عنوان یک static type checker به شما کمک میکنه ایرادات موجود در کلاس ها، توابع و ... رو پیدا کنید و بتونید typeهای دقیق تری استفاده کنید. همچنین ابزار Pyright که توسط مایکروسافت توسعه داده میشه، در VSCode به صورت integrated با افزونه Pylance کار میکنه و اگر از VSCode استفاده میکنید پیشنهاد میکنم حتما افزونه Pylance رو نصب کنید. PyCharm هم یک Type Checker داره ولی هنوز توانمندی Pylance و MyPy رو نداره.


- منابع آموزشی:

1. داکیومنت Flake8
https://flake8.pycqa.org/en/latest/user/invocation.html

2. داکیومنت MyPy
https://mypy.readthedocs.io/en/stable/getting_started.html


Code Formatting

برای مرتب و organize کردن importها از isort استفاده کنید، هم به صورت CLI در دسترس هست و هم یک API داره که میتونید در کد پایتون استفاده کنید. یک code formatter بسیار معروف که در اکثر پروژه⁧ها استفاده میشه Black هست، زیر نظر PSF (یا Python Software Foundation) و برنامه نویسای با تجربه و کار کشته ای همچون آقای Łukasz Langa (ریلیس منیجر پایتون 3.9) توسعه داده میشه، با دیگر ابزار ها مثل isort سازگار هست، با PEP8 سازگاره و کلی قابلیت مزیت دیگه داره که حقیقتا اینجا جا نمیشن :)

- منابع آموزشی:

1. داکیومنت isort
https://pycqa.github.io/isort/

2. داکیومنت Black
https://black.readthedocs.io/en/stable/getting_started.html

3. یک ویدیو از PyCon 2019 درباره Black
https://youtu.be/esZLCuWs_2Y

* این ابزارها همگی داکیومنت ساده و خوانایی دارن و به نظرم بهترین منبع همین داکیومنت⁧هاشون هست.


Testing

دو کتابخونه Pytest و unittest (در stdlib موجود هست) در تست نویسی پروژه ها استفاده میشن، برای تست کردن پروژه در environmentهای متفاوت از ابزار tox استفاده میشه و باهاش میتونید در نسخه های متفاوتی از پایتون کدتون رو تست کنید.


- منابع آموزشی:

1. یک مقاله جامع درباره تست نویسی، انواع آن و روش⁧های مورد استفاده در پایتون
https://realpython.com/python-testing/

2. ویدیو درباره unittest در پایتون
- آقای ned batchelder:
https://m.youtube.com/watch?v=FxSsnHeWQBY
- آقای Corey Schafer:
https://www.youtube.com/watch?v=6tNS--WetLI


* همچنین اگر از Git در پروژه خودتون استفاده میکنید، پیشنهاد میکنم از pre-commit حتما استفاده کنید و تمام این ابزارهای گفته شده رو automate کنید تا در هربار commit کردن، قبل از اینکه commit انجام بشه، این ابزارها روی کدتون اجرا بشن و اگر اشکالی در کدتون وجود داره پیدا بشه و اون رو برطرف کنید و دوباره commit کنید.

وبسایت pre commit:
https://pre-commit.com/

✒️ @Pygrammer
〰️〰️〰️〰️〰️〰️〰️
©️@PyFarsi
👍3
Forwarded from Django Expert (Boby Cloud)
✔️ راهنمای کلین کد در پایتون

کتاب کلین کد معروف آقای Robert C. Martin برای هر برنامه نویسی از واجباته، اما چون درمورد جاوا صحبت میکنه، برای برنامه نویس های پایتون لذت بخش و خیلی بدردبخور نیست.
این ریپو راهنمای بسیار خوب و دقیقی برای کد تمیز نوشتن در پایتون هست که همون کتاب کلین کده، اما به زبان پایتون

از خوندنش لذت ببرید
👉 Link: https://github.com/SepehrRasouli/clean-code-python

بچه‌ها سپهر کل ریپو کلین کد پایتون رو به فارسی ترجمه کرده،‌ برای حمایت ازش استار بدید 🔥✌️

〰️〰️〰️〰️〰️
© @DjangoEx
👍9
سلام به همه
کسی هست html و css اصولی بلد باشه
که با هم چند قسمت html , css رکورد کنیم (رایگان)
تشکر از همه
لطفا به @miladhzz پیام بدید
نکته خوبیه. پس تمرکز کنید روی جنگو 😂
👍16🔥1
سلام به همه 👋🏻
امروز یکی از دوستان در مورد چند زبانه کردن سایت جنگویی ازم پرسید
اولین پروژه ای که با جنگو برای مشتری انجام دادم. یه سایت چند زبانه بود (فکر کنم فارسی انگلیسی روسی)
سورسش به صورت عمومی توی لینک زیر در دسترس هست (تجربه زیادی نداشتم توی جنگو، اما تجربه خوبی کسب کردم باهاش)
https://github.com/miladhzz/fahandejsite1
👍9
جنگولرن
تفاوت merge و rebase در گیت از لینکدین Slobodan Gajić
در مورد Cherry-pick در گیت. از لینکدین Slobodan Gajić
👍1
Forwarded from Microfrontend.ir
پیاده سازی Django Soft Delete

چندی پیش خبری منتشر شد که در توییتر حذف داده‌ها به درستی انجام نمی‌شود. واقعیت این است که در اغلب نرم‌افزارهای مدرن داده‌ها به صورت فیزیکی حذف نمی‌شوند و صرفا برچسپ حذف شده می‌گیرند. در این ویدیو با هدف آشنایی بیشتر با مدل‌های abstract و proxy در جنگو و همچنین ایجاد Custom Queryset و Custom Manager و Custom Admin Action مدلی را طراحی کردیم که در صورت ارث بری از آنها داده‌ها با دستور حذف به صورت فیزیکی پاک نشوند و در صورت لزوم برگردانده شوند. برای توضیح بیشتر نیز به جنگو ادمین یک اکشن اضافه کردیم که داده‌هایی که حذف شده اند را برکردانیم


Link: https://youtu.be/I_23u4xj1Ws

PlayList: https://youtube.com/playlist?list=PLJ9zDGwhhsBwdrfdaoOqbYev3_ocuBOfv

〰️〰️〰️〰️〰️
© @microfrontend_ir
👍7
Forwarded from Django Expert (Majid A.M)
✔️ تا حالا به صورت اختصاصی Django ORM
رو خوندید؟ یه لینک باحال برای مطالعه ORM

👉🏻Link: https://books.agiliq.com/projects/django-orm-cookbook/en/latest/index.html


@DjangoIR

© @DjangoEx
👍8👏2
یه نکته مهم 👍🏻
👍42👏2👎1
آپدیت کردن ورژن توی پایتون این نیست که فقط ببینید چی جدید اومده و استفاده کنید یا حتی بدتر ازون فقط سورس کدی که مثلا روی py3.2 بود رو بیارید روی py3.11 اجرا بگیرید (فقط در حدی که اگر اروری بود برطرف کنید)
برای همین خیلی از بچه‌های dev manager / senior کمی مقاومت دارند در برابر ورژن پایتون عوض کردن به بهونه آپدیت.

برای خودم حالا که دارم میرم سراغ 3.11 سخنرانی‌های مختلفی رو گوش میدم.
از core developer های پایتون و البته Guido van Rossum راجب پایتون 3.11 و تغییراتش شنیدم و بسیار تاکید شده که اگر python 3.11 به درستی استفاده نشه می‌تونه از 3.8 کندتر هم باشه
برای مثال (مثال خالق پایتون) : عملگر add توی پایتون نسخه 3.11؛ اینجوری هست که اگر شما تا الان ۲ بار این رو برای int استفاده کردید دفعه سوم دیگه type check انجام نمیده که مطمئن بشه هر ۲ سمت عملگر از int باشه و فقط انجامش میده اگر درست باشه خروجی میگیره و اگر اشتباه باشه بر میگرده روی چیزی که قبلا بود؛ ۲ طرف رو چک میکنه و بعد add رو مناسب اون انجام میده.

با این حساب اگر لیستی از float - int - str دارید بهتره اینطوری نباشه که هی بین این موارد چرخشی کار انجام بشه؛
شاید حتی بهتر باشه ۳ تا لیست (یا قشنگر ۳ تا array) با دیتاتایپ ثابت براشون در نظر بگیرید.

این فقط ۱ مثال از تغییرات زیادی بود که وجود داره

در انتها باید بگم :
دیدن همچین ارائه‌هایی میتونه خیلی کمک کننده باشه
Youtube Link
👍151👌1
لینک زیر یکی از سرگرمی های منه. به نظرم بد نیست به جای رفرش زدن ورزش3 اینو رفرش کنم 😂

https://stackoverflow.com/questions/tagged/django
👍15
جنگولرن
چند سطر از کتاب جنگو دیزاین پترن بعضی وقتها ممکنه مدل های ما کدشون زیاد بشه (چاق بشن) اگه چندتا مدل توی یه فایل داشته باشیم میتونیم برای هر کدوم یک فایل مجزا ایجاد کنیم و برای اینکه مثل قبل مثلا بنویسیم import models.Post از فایل __init__.py کمک میگیریم.
بعضی وقتها ممکنه مدل های ما کدشون زیاد بشه (چاق بشن)
اگه چندتا مدل توی یه فایل داشته باشیم میتونیم برای هر کدوم یک فایل مجزا ایجاد کنیم
و برای اینکه مثل قبل مثلا بنویسیم import models.Post از فایل __init__.py کمک میگیریم.

منبع در داکیومنت جنگو:
https://docs.djangoproject.com/en/4.1/topics/db/models/#organizing-models-in-a-package
👍7
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
💥 حذف استرینگ خالی در split


>>> s = 'سایر رسانه ها,'
>>> s.split(',')
['سایر رسانه ها', '']
>>> list(filter(None, s.split(',')))
['سایر رسانه ها']

❤️ @SeYeD_BaX
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Forwarded from Python for Data Science
🔺 حذف استرینگ خالی در split

>>> s = 'abc,'
>>> s.split(',')
['abc', '']
>>> [item for item in s.split(',') if item]
['abc']

😊 Fast and clean

🔎 @py4ds
👍7👏1