✅ دو مثال تست نویسی در Django rest framework
من در حال یادگیری DRF و تست نویسی اش هستم. شما چطور؟ 🙃
https://medium.com/sulang/testing-django-rest-framework-d98279a5d3a5
https://medium.com/@ksarthak4ever/test-driven-development-tdd-in-django-and-django-rest-framework-drf-a889a8068cb7
من در حال یادگیری DRF و تست نویسی اش هستم. شما چطور؟ 🙃
https://medium.com/sulang/testing-django-rest-framework-d98279a5d3a5
https://medium.com/@ksarthak4ever/test-driven-development-tdd-in-django-and-django-rest-framework-drf-a889a8068cb7
👍8
✅ یه مطلب خلاصه و کاربردی در مورد تست نویسی در جنگو - به همراه best-practices
قسمت اول:
https://realpython.com/testing-in-django-part-1-best-practices-and-examples/
قسمت دوم:
https://realpython.com/testing-in-django-part-2-model-mommy-vs-django-testing-fixtures/
قسمت اول:
https://realpython.com/testing-in-django-part-1-best-practices-and-examples/
قسمت دوم:
https://realpython.com/testing-in-django-part-2-model-mommy-vs-django-testing-fixtures/
👍5
✅ یه مطلب خوب در مورد Fixtures در جنگو
خیلی خلاصه بخوام بگم. با fixtures میتونیم seed data از روی فایل انجام بدیم. کاربردش توی تست بیشتر به چشم میاد
https://dev.to/hussainislam/django-fixtures-seeding-databases-5ai
تشکر از @BobyCloud
خیلی خلاصه بخوام بگم. با fixtures میتونیم seed data از روی فایل انجام بدیم. کاربردش توی تست بیشتر به چشم میاد
https://dev.to/hussainislam/django-fixtures-seeding-databases-5ai
تشکر از @BobyCloud
DEV Community
Django Fixtures: seeding databases
When we create an application or project in Django, we would need to test the features of the applica...
👍3
✅ یه مثال ساده استفاده از پکیج های factory_boy و faker در پروژه هایی که با DRF پیاده سازی شدن
پکیج factory_boy به زبان ساده دیتای فیک برای تست هامون مهیا میکنه
✔️ توی داکیومنت factory_boy گفته که اولین نسخه پکیج ما مختص جنگو بوده. اما الان فریمورک های دیگه رو هم ساپورت میکنن
پکیج faker هم توی این کار میتونه بهش کمک کنه. مثلا fake.name() یه اسم به ما تحویل میده و...
https://ruddra.com/tdd-drf-factory-boy-faker/
پکیج factory_boy به زبان ساده دیتای فیک برای تست هامون مهیا میکنه
✔️ توی داکیومنت factory_boy گفته که اولین نسخه پکیج ما مختص جنگو بوده. اما الان فریمورک های دیگه رو هم ساپورت میکنن
پکیج faker هم توی این کار میتونه بهش کمک کنه. مثلا fake.name() یه اسم به ما تحویل میده و...
https://ruddra.com/tdd-drf-factory-boy-faker/
Coding Blog by Arnab Shil
Testing for Django Rest Framework with Factory Boy and Faker
“I’m not a great programmer; I’m just a good programmer with great habits.” ― Kent Beck …
👍4
✅ چند تا پست خوب در مورد جنگو از سایت hacksoft
این سایت تمرکزش فقط جنگو نیست. اما نویسنده مطالب جنگو اش واقعا کارش درسته
لینک مطالب جنگو این سایت:
https://www.hacksoft.io/category/django
این سایت تمرکزش فقط جنگو نیست. اما نویسنده مطالب جنگو اش واقعا کارش درسته
لینک مطالب جنگو این سایت:
https://www.hacksoft.io/category/django
👍9
Forwarded from BG OPC
https://GitHub.com/wsvincent/awesome-django
ریپو بدرد بخور جنگو
هر چیزی تو جنگو میخواستین از جمله cms
و کلی پکیج هایی که مث پلاگین ه
عمل میکنه
ریپو بدرد بخور جنگو
هر چیزی تو جنگو میخواستین از جمله cms
و کلی پکیج هایی که مث پلاگین ه
عمل میکنه
GitHub
GitHub - wsvincent/awesome-django: A curated list of awesome things related to Django
A curated list of awesome things related to Django - wsvincent/awesome-django
👍9
Forwarded from 🐍 Python & Raspberry 🐍 (DailyProjects)
✔️ شاید با شنیدن کلمهی ORM همهمون یاد SQLAlchamy یا Django ORM بیوفتیم، باشه اینا خیلی خوبن ولی لایبرریهای جدیدی که نوشته میشن دارن از تمام language featureهای نایس عه پایتون ۳ خصوصا 3.6 به بعد (Type Hints, F strings and async/await)
با قدرت استفاده میکنن و زیبایی خلق میکنن.
پیکولو، یکی از همین کتابخونههاست.
نویسندهی پیکولو چون از اوایل روزهای کاریش غرق در دنیای async بوده این ORM رو به صورت async first مینویسه :))
ولی میشه ازش به صورت sync هم استفاده کرد.
✔️ از دیگر ویژگیهاش
• A builtin playground, which makes learning a breeze.
• Tab completion support - works great with iPython and VSCode.
• Batteries included - a User model, authentication, migrations, an admin GUI, and more.
• Modern Python - fully type annotated.
• Make your codebase modular and scalable with Piccolo apps (similar to Django apps) 👌
میتونید ازش به عنوان یه کوئری بیلدر استفاده کنید:
# Select:
await Band.select(
Band.name
).where(
Band.popularity > 100
)
یا مثل یه ORM عادی باهاش رفتار کنید:
# To fetch an object from the database, and update it:
b = await Band.objects().get(Band.name == 'Pythonistas')
b.popularity = 10000
await b.save()
✔️ این ORM بهترین عملکرد رو با postgresql داره ولی از sqlite هم پشتیبانی میکنه و همچنین قسمت زیبای ماجرا اینه که از:
Starlette, FastAPI, BlackSheep, Xpresso and Starlite are currently supported.
هم برای ساختن web app های نایس پشتیبانی میکنه :))
🐙 https://github.com/piccolo-orm/piccolo
#m4hdi
#ORM
#library
#async
〰〰〰〰〰〰
©raspberry_python
دنبال کردن هشتگ m4hdi
دنبال کردن هشتگ orm
دنبال کردن هشتگ library
دنبال کردن هشتگ async
با قدرت استفاده میکنن و زیبایی خلق میکنن.
پیکولو، یکی از همین کتابخونههاست.
نویسندهی پیکولو چون از اوایل روزهای کاریش غرق در دنیای async بوده این ORM رو به صورت async first مینویسه :))
ولی میشه ازش به صورت sync هم استفاده کرد.
✔️ از دیگر ویژگیهاش
• A builtin playground, which makes learning a breeze.
• Tab completion support - works great with iPython and VSCode.
• Batteries included - a User model, authentication, migrations, an admin GUI, and more.
• Modern Python - fully type annotated.
• Make your codebase modular and scalable with Piccolo apps (similar to Django apps) 👌
میتونید ازش به عنوان یه کوئری بیلدر استفاده کنید:
# Select:
await Band.select(
Band.name
).where(
Band.popularity > 100
)
یا مثل یه ORM عادی باهاش رفتار کنید:
# To fetch an object from the database, and update it:
b = await Band.objects().get(Band.name == 'Pythonistas')
b.popularity = 10000
await b.save()
✔️ این ORM بهترین عملکرد رو با postgresql داره ولی از sqlite هم پشتیبانی میکنه و همچنین قسمت زیبای ماجرا اینه که از:
Starlette, FastAPI, BlackSheep, Xpresso and Starlite are currently supported.
هم برای ساختن web app های نایس پشتیبانی میکنه :))
🐙 https://github.com/piccolo-orm/piccolo
#m4hdi
#ORM
#library
#async
〰〰〰〰〰〰
©raspberry_python
دنبال کردن هشتگ m4hdi
دنبال کردن هشتگ orm
دنبال کردن هشتگ library
دنبال کردن هشتگ async
GitHub
GitHub - piccolo-orm/piccolo: A fast, user friendly ORM and query builder which supports asyncio.
A fast, user friendly ORM and query builder which supports asyncio. - piccolo-orm/piccolo
🔥9👍2
Forwarded from دستاوردهای یادگیری عمیق(InTec)
برای همه دوستان چه تازه کار چه حرفهای (که نحوه عملکرد رو نمیدونند)
هرچیزی رو pip install نزنید
هر پکیجی رو استفاده نکنید
این جمله ادامه داره : "برای هر چیزی توی پایتون ی پکیج وجود داره" بله وجود داره ولی ادامهاش مهمتره (شما حق نصبش رو ندارید.
انقدر ادامه این جمله استفاده نشده که چندسالی هست ما توی شرکت از Docker و ... برای حتی محیط توسعه استفاده میکنیم (به لطف vscode که دیگه راحتتر هم شده)
دلیل خوبی هم داریم :
pip (pypi.org)
هیچ چک امنیتی روی کدها نداره و شما هرچیزی رو میتونید بعنوان پکیج ارسال کنید
برای همین نباید از هر کتابخونهای استفاده کنید.
اگر کتابخونه معروف نیست (چندنفر توسعه دهنده نداره) حتما سورس کدهاش رو بخونید و ترجیحا خودتون به اندازه نیاز بازنویسی کنید؛ یا اینکه روی همون ورژن خاصی که بررسی کردید بمونید و در زمان نیاز به آپدیت پکیج سورس نسخه جدید رو مجددا بررسی کنید.
(این شرایط برای باقی زبانهای این تیپی هم وجود داره)
خلاصه که ی پکیج میتونه شامل :
Keylogger, Trojan, ....
هم باشه؛ در صورت نفوذ دولوپر شخصی هست که باید پاسخگو باشه.
هرچیزی رو pip install نزنید
هر پکیجی رو استفاده نکنید
این جمله ادامه داره : "برای هر چیزی توی پایتون ی پکیج وجود داره" بله وجود داره ولی ادامهاش مهمتره (شما حق نصبش رو ندارید.
انقدر ادامه این جمله استفاده نشده که چندسالی هست ما توی شرکت از Docker و ... برای حتی محیط توسعه استفاده میکنیم (به لطف vscode که دیگه راحتتر هم شده)
دلیل خوبی هم داریم :
pip (pypi.org)
هیچ چک امنیتی روی کدها نداره و شما هرچیزی رو میتونید بعنوان پکیج ارسال کنید
برای همین نباید از هر کتابخونهای استفاده کنید.
اگر کتابخونه معروف نیست (چندنفر توسعه دهنده نداره) حتما سورس کدهاش رو بخونید و ترجیحا خودتون به اندازه نیاز بازنویسی کنید؛ یا اینکه روی همون ورژن خاصی که بررسی کردید بمونید و در زمان نیاز به آپدیت پکیج سورس نسخه جدید رو مجددا بررسی کنید.
(این شرایط برای باقی زبانهای این تیپی هم وجود داره)
خلاصه که ی پکیج میتونه شامل :
Keylogger, Trojan, ....
هم باشه؛ در صورت نفوذ دولوپر شخصی هست که باید پاسخگو باشه.
👍23🤔3
Forwarded from Django Expert (Boby Cloud)
https://amirhomayoon.hashnode.dev/10-amazing-books-for-a-django-developer
™ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx
™ @DjangoIR
〰️〰️〰️〰️〰️〰️
© @DjangoEx
Amirhomayoon Ravaei's Blog
10 Amazing Books for A Django Developer 📚
As a Software Developer, you should always try to know more and more.one of the ways that you can easily learn from it, it's reading books.there are a lot of valuable books to help you out in this field and they can change your level "From Zero To He...
🔥3
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت چهلم - نصب جنگو و اولین پروژه
لینک آپارات:
https://aparat.com/v/Oh1k0
لینک یوتیوب:
https://youtu.be/rdtP_UVLulg
لینک آپارات:
https://aparat.com/v/Oh1k0
لینک یوتیوب:
https://youtu.be/rdtP_UVLulg
👍8👏1
سلام به همه
در حین بررسی کدهای این ریپازیتوری (https://github.com/miladhzz/DRF-TDD-example) بودم که:
✔️ توی تنظیمات پروژه اش با TEST_RUNNER آشنا شدم.
به صورت کلی بخوام بگم: ما برای اجرای تست ها از ابزار داخلی خود جنگو ( که با دستور manage.py test اجرا میشه ) استفاده میکنیم. اما جنگو این امکان رو به ما میده که از فریمورک های تست دیگه هم استفاده کنیم.
اتفاقا توی همین پروژه با nose آشنا شدم و دارم در مورد تفاوتش با pytest تحقیق میکنم.
در مورد TEST_RUNNER میتونید از لینک زیر بیشتر بخونید (داکیومنت جنگو):
https://docs.djangoproject.com/en/4.1/topics/testing/advanced/#using-different-testing-frameworks
پروژه رو فورک کردم که داشته باشیمش :)
در حین بررسی کدهای این ریپازیتوری (https://github.com/miladhzz/DRF-TDD-example) بودم که:
✔️ توی تنظیمات پروژه اش با TEST_RUNNER آشنا شدم.
به صورت کلی بخوام بگم: ما برای اجرای تست ها از ابزار داخلی خود جنگو ( که با دستور manage.py test اجرا میشه ) استفاده میکنیم. اما جنگو این امکان رو به ما میده که از فریمورک های تست دیگه هم استفاده کنیم.
اتفاقا توی همین پروژه با nose آشنا شدم و دارم در مورد تفاوتش با pytest تحقیق میکنم.
در مورد TEST_RUNNER میتونید از لینک زیر بیشتر بخونید (داکیومنت جنگو):
https://docs.djangoproject.com/en/4.1/topics/testing/advanced/#using-different-testing-frameworks
پروژه رو فورک کردم که داشته باشیمش :)
GitHub
GitHub - miladhzz/DRF-TDD-example: An example Django REST framework project for test driven development.
An example Django REST framework project for test driven development. - GitHub - miladhzz/DRF-TDD-example: An example Django REST framework project for test driven development.
👍9🔥1
Forwarded from Deep Time
در حال حاضر در حال refactoring یکی از سیستمهای خودمون هستم و گفتم بد نیست توضیحی درباره اهمیت refactoring بدم.
یکی از مهم ترین پادالگوها (anti-patterns) در ایجاد نرمافزار Lava Flow (جریان مواد مذاب) هست که به حالتی گفته میشه که Dead Code داریم. در واقع وقتی برنامهنویسهای تیم شما یک کد رو مینویسن و میبینن کار هم میکنه (functional هست) احتمالا کار رو تموم شده بدونن و این جریان مذاب کد رو بیخیال بشن که باعث میشه فریز بشه و کلی اذیت کنه بعدا. خصوصا وقتی مدتی از نوشتن کد بگذره نه تنها افراد جدید نمیتونن کد رو بفهمن بلکه خود کسی هم که کد رو نوشته دیگه نمیفهمه و کد قابل نگهداری نخواهد بود.
برای همین تعریف Dead Code کدی هست که اتفاقا میتونه functional هم باشه اما maintainable نیست.
علت چیه:
در تیم شما Refactoring به شکل سختگیرانه انجام نمیشه. دقت کنید که در تمامی متولوژیهای چابک Refactoring اجباری هست.
راه حل:
سادهسازی و refactoring باید در پروژههای شما اجبار باشن. دقیقا مثل اون اصل Invent and Simplify در شرکت آمازون. هرچقدر کار بزرگتر بشه اهمیت سادهسازی بالاتر خواهد بود. ساده سازی باید به شکل مداوم انجام بشه.
باید دقت کنیم که تعریف Done یا تمام شده یک تعریف بسیار مهم در توسعه چابک و روشهای agile هست و باید حتما یکسری المان در نظر گرفته بشه. اینکه ددلاین یک تسک نزدیک باشه و کدی که کار میکنه رو تمام شده فرض کنیم و بگیم بعدا برمیگردیم اصلاح میکنیم بزرگترین اشتباه هست.
@deeptimeai
یکی از مهم ترین پادالگوها (anti-patterns) در ایجاد نرمافزار Lava Flow (جریان مواد مذاب) هست که به حالتی گفته میشه که Dead Code داریم. در واقع وقتی برنامهنویسهای تیم شما یک کد رو مینویسن و میبینن کار هم میکنه (functional هست) احتمالا کار رو تموم شده بدونن و این جریان مذاب کد رو بیخیال بشن که باعث میشه فریز بشه و کلی اذیت کنه بعدا. خصوصا وقتی مدتی از نوشتن کد بگذره نه تنها افراد جدید نمیتونن کد رو بفهمن بلکه خود کسی هم که کد رو نوشته دیگه نمیفهمه و کد قابل نگهداری نخواهد بود.
برای همین تعریف Dead Code کدی هست که اتفاقا میتونه functional هم باشه اما maintainable نیست.
علت چیه:
در تیم شما Refactoring به شکل سختگیرانه انجام نمیشه. دقت کنید که در تمامی متولوژیهای چابک Refactoring اجباری هست.
راه حل:
سادهسازی و refactoring باید در پروژههای شما اجبار باشن. دقیقا مثل اون اصل Invent and Simplify در شرکت آمازون. هرچقدر کار بزرگتر بشه اهمیت سادهسازی بالاتر خواهد بود. ساده سازی باید به شکل مداوم انجام بشه.
باید دقت کنیم که تعریف Done یا تمام شده یک تعریف بسیار مهم در توسعه چابک و روشهای agile هست و باید حتما یکسری المان در نظر گرفته بشه. اینکه ددلاین یک تسک نزدیک باشه و کدی که کار میکنه رو تمام شده فرض کنیم و بگیم بعدا برمیگردیم اصلاح میکنیم بزرگترین اشتباه هست.
@deeptimeai
👍9
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویس از پایه قسمت چهل و یکم - ساخت اولین اپلیکیشن جنگو
لینک آپارات:
https://www.aparat.com/v/J3e8C
لینک یوتیوب:
https://youtu.be/ULiyFzLRMGo
لینک آپارات:
https://www.aparat.com/v/J3e8C
لینک یوتیوب:
https://youtu.be/ULiyFzLRMGo
👍8❤1
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت چهل و دوم - فایل های استاتیک جنگو و متد GET
لینک آپارات:
https://aparat.com/v/VYNl8
لینک یوتیوب:
https://youtu.be/5aqJ8vNbmeA
لینک آپارات:
https://aparat.com/v/VYNl8
لینک یوتیوب:
https://youtu.be/5aqJ8vNbmeA
✅ یه ویدئوی حدودا 20 دقیقه ای که میتونید باهاش کاربرد Faker و facotry_boy رو درک کنید
البته یه Django Command هم میسازه که اونم بد نیست یاد بگیریم. یه پکیج به اسم halo هم معرفی میکنه. اونم باحاله
یکم انگلیسی حرف زدنش رو مخه. اما کلا مفهومه
آپدیت: به عنوانش که گفته react و... کاری نداشته باشید این قسمتش فقط Faker و facotry_boy و... هست
https://www.youtube.com/watch?v=WWowP_8bMR4
البته یه Django Command هم میسازه که اونم بد نیست یاد بگیریم. یه پکیج به اسم halo هم معرفی میکنه. اونم باحاله
یکم انگلیسی حرف زدنش رو مخه. اما کلا مفهومه
آپدیت: به عنوانش که گفته react و... کاری نداشته باشید این قسمتش فقط Faker و facotry_boy و... هست
https://www.youtube.com/watch?v=WWowP_8bMR4
YouTube
08 - Create a custom Django command to populate the DB with factory boy and faker
A full-stack series about Django, Django-rest-framework, react, redux/toolkit, and typescript
The Django-react playlist (this playlist):
https://youtube.com/playlist?list=PLM0LBHjz37LU_XA4TX_H0chJ1OgEOHpJ3
repo [code]:
https://github.com/Rowadz/django-react…
The Django-react playlist (this playlist):
https://youtube.com/playlist?list=PLM0LBHjz37LU_XA4TX_H0chJ1OgEOHpJ3
repo [code]:
https://github.com/Rowadz/django-react…
👍6
🧐 آیا هات داگ ساندویچه؟
توی این مطلب در مورد فیلد های ManyToMany در جنگو خیلی روان توضیح داده شده
✔️ در مورد through هم توضیح داده که توصیه میکنم حتما این through رو بخونید
https://www.sankalpjonna.com/learn-django/the-right-way-to-use-a-manytomanyfield-in-django
توی این مطلب در مورد فیلد های ManyToMany در جنگو خیلی روان توضیح داده شده
✔️ در مورد through هم توضیح داده که توصیه میکنم حتما این through رو بخونید
https://www.sankalpjonna.com/learn-django/the-right-way-to-use-a-manytomanyfield-in-django
Sankalpjonna
The right way to use a ManyToManyField in Django
A detailed explanation of how a many-to-many relationship works in Django and all the caveats associated with using the ManyToManyField
❤4👍1
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت چهل و سوم - لاگین با استفاده از متد GET
توی این ویدئو اول از همه. تغییراتی که ابوذر داده بود رو اعمال کردیم. بعدش با دیباگ و breakpoint آشنا شدیم و باهاش تونستیم کدمون رو دیباگ کنیم. با استفاده از متد GET اطلاعات ارسالی از فرم رو توی view مون نمایش دادیم و با استفاده از متد authenticate و متد login تونستیم توی جنگو لاگین کنیم. بعد از لاگین هم با متد redirect به صفحه ادمین رفتیم.
لینک آپارات:
https://aparat.com/v/M2kTr
لینک یوتیوب:
https://youtu.be/NopA_0axBFI
توی این ویدئو اول از همه. تغییراتی که ابوذر داده بود رو اعمال کردیم. بعدش با دیباگ و breakpoint آشنا شدیم و باهاش تونستیم کدمون رو دیباگ کنیم. با استفاده از متد GET اطلاعات ارسالی از فرم رو توی view مون نمایش دادیم و با استفاده از متد authenticate و متد login تونستیم توی جنگو لاگین کنیم. بعد از لاگین هم با متد redirect به صفحه ادمین رفتیم.
لینک آپارات:
https://aparat.com/v/M2kTr
لینک یوتیوب:
https://youtu.be/NopA_0axBFI
👍5
✅ در هر متد تست فقط یک assertion باید انجام داد...!
توی کتاب Art of Unit Testing صراحتا جمله بالا رو تاکید کرده.
اما همونطوری که می بینید خودش یه جایی این اصل رو نقض کرده 🧐 (کد سی شارپه. ولی توی این موضوع زبان مهم نیست)
البته توی چند خط پایین تر توضیح داده که چه مواقعی میشه چندتا assert توی یه تست داشته باشیم.
✔️ به صورت کلی هر تست باید یک رفتار (behavior) رو بررسی کنه و اگه یه رفتار داریم، ولی نیاز به چندتا assert باشه، مجازه.
توضیحات تکمیلی رو توی مطلب زیر میتونید ببینید (منابع جالبی رو هم معرفی کرده)
https://pierodibello.medium.com/one-assertion-per-test-732cc2a7d3d
توی کتاب Art of Unit Testing صراحتا جمله بالا رو تاکید کرده.
اما همونطوری که می بینید خودش یه جایی این اصل رو نقض کرده 🧐 (کد سی شارپه. ولی توی این موضوع زبان مهم نیست)
البته توی چند خط پایین تر توضیح داده که چه مواقعی میشه چندتا assert توی یه تست داشته باشیم.
✔️ به صورت کلی هر تست باید یک رفتار (behavior) رو بررسی کنه و اگه یه رفتار داریم، ولی نیاز به چندتا assert باشه، مجازه.
توضیحات تکمیلی رو توی مطلب زیر میتونید ببینید (منابع جالبی رو هم معرفی کرده)
https://pierodibello.medium.com/one-assertion-per-test-732cc2a7d3d
👍5
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت چهل و چهارم - لاگین با استفاده از متد POST
در این ویدئو ابتدا یکم در مورد CSRF و middleware های جنگو توضیح میدم. بعدش میریم و چندتا عکس توی گوگل در مورد این attack می بینیم. و در حین این توضیحات یکم با cookie ها آشنا میشیم. و بالاخره با csrf_token جنگو و نحوه کارکردش آشنا میشیم و با فرمی که داریم لاگین می کنیم. این ویدئو به مشکل عجیبی خوردیم که باعث شد حدودا ۲۲ دقیقه بشه :)
لینک آپارات:
https://aparat.com/v/hsbai
لینک یوتیوب:
https://youtu.be/JOZpNeLZJ4E
در این ویدئو ابتدا یکم در مورد CSRF و middleware های جنگو توضیح میدم. بعدش میریم و چندتا عکس توی گوگل در مورد این attack می بینیم. و در حین این توضیحات یکم با cookie ها آشنا میشیم. و بالاخره با csrf_token جنگو و نحوه کارکردش آشنا میشیم و با فرمی که داریم لاگین می کنیم. این ویدئو به مشکل عجیبی خوردیم که باعث شد حدودا ۲۲ دقیقه بشه :)
لینک آپارات:
https://aparat.com/v/hsbai
لینک یوتیوب:
https://youtu.be/JOZpNeLZJ4E
👍3
✅ قطعا تا حالا توی فیلدهای مدل تون از choices استفاده کردید. مثلا برای مشخص کردن (مرد/زن)
توی عکس شماره 1 حالت عادی این روش هست
و عکس شماره 2 همین کارو با ارث بری از TextChoices پیاده سازی کرده.
لینک زیر در این مورد بیشتر توضیح داده:
https://adamj.eu/tech/2020/01/27/moving-to-django-3-field-choices-enumeration-types/
توی عکس شماره 1 حالت عادی این روش هست
و عکس شماره 2 همین کارو با ارث بری از TextChoices پیاده سازی کرده.
لینک زیر در این مورد بیشتر توضیح داده:
https://adamj.eu/tech/2020/01/27/moving-to-django-3-field-choices-enumeration-types/
👍12