چنل پایتون | جنگو | برنامه نویسی وب سایت
438 subscribers
293 photos
141 videos
40 files
211 links
ارتباط با مدیر:

@Amir_123_ka
Download Telegram
آموزش Tkinter از مقدماتی تا پیشرفته بزاریم؟
Anonymous Poll
63%
اره😃
38%
نه😕
میزاریم برا دل اولیا😀
Forwarded from Ninja Learn | نینجا لرن (Mohammad Eslami)
#پست_جدید

💎 فیکسچر (fixure) در جنگو 💎

فیکسچر چیه؟
فیکسچر یه جور داده‌ی از پیش تعریف شده‌س که قبل از اجرای تست‌هامون به دیتابیس اضافه میشه. این داده‌ها میتونن هر چیزی باشن؛ از یه کاربر ساده گرفته تا یه محصول پیچیده توی فروشگاه آنلاینمون.

چرا بهش نیاز داریم؟

1️⃣ تست‌های دقیق‌تر: با داشتن داده‌های مشخص، می‌تونیم تست‌های دقیق‌تری بنویسیم و مطمئن بشیم که همه چیز طبق انتظار کار می‌کنه.

2️⃣ تست‌های سریع‌تر: به جای اینکه هر بار قبل از اجرای تست‌ها، داده‌های مورد نیازمون رو به صورت دستی وارد دیتابیس کنیم، با استفاده از فیکسچر این کار رو یک بار انجام میدیم و در تست‌های بعدی از همون داده‌ها استفاده می‌کنیم.

3️⃣ تکرارپذیری تست‌ها: با استفاده از فیکسچر، می‌تونیم مطمئن باشیم که هر بار که تست‌هامون رو اجرا می‌کنیم، نتیجه یکسانی خواهیم داشت.

ساختن یه فیکسچر
برای ساختن یه فیکسچر، یه فایل با پسوند json یا yaml ایجاد می‌کنیم و داده‌های مورد نظرمون رو به صورت ساخت‌یافته در اون تعریف می‌کنیم.

مثال با فرمت JSON:

[
{
"model": "myapp.Product",
"pk": 1,
"fields": {
"name": "گوشی موبایل سامسونگ",
"price": 5000000
}
},
{
"model": "myapp.Category",
"pk": 1,
"fields": {
"name": "گوشی موبایل"
}
}
]


در این مثال، ما دو رکورد برای مدل‌های Product و Category تعریف کردیم.

استفاده از فیکسچر در تست‌ها

from django.test import TestCase
from .models import Product

class ProductTestCase(TestCase):
fixtures = ['products.json']

def test_product_detail(self):
product = Product.objects.get(pk=1)
self.assertEqual(product.name, 'گوشی موبایل سامسونگ')

در این مثال، ما به کلاس تست‌مون گفتیم که قبل از اجرای هر تستی، فیکسچر products.json رو لود کنه. بعد، در تست test_product_detail، محصول با id برابر با ۱ رو پیدا می‌کنیم و مطمئن می‌شیم که نام محصول درسته.


دستورات لازم و ساخت و لود کردن فیکسچر

1️⃣ ساختن یه فیکسچر با دستور dumpdata
دستور dumpdata بهت اجازه میده که داده‌های موجود در دیتابیس رو به صورت یک فایل JSON یا YAML خروجی بگیری. این فایل خروجی رو میتونی به عنوان فیکسچر استفاده کنی.

# برای خروجی گرفتن از همه مدل‌ها به صورت JSON:Bash
python manage.py dumpdata app_name.ModelName --format json --indent 2 --output my_fixture.json

# برای خروجی گرفتن از یک مدل خاص به صورت YAML:
python manage.py dumpdata app_name.ModelName --format yaml--indent 2 --output my_fixture.yaml


2️⃣ استفاده از فیکسچر با دستور loaddata
دستور loaddata بهت اجازه میده که داده‌های موجود در یک فایل فیکسچر رو به دیتابیس اضافه کنی.

# برای بارگذاری داده‌های یک فایل JSON:
python manage.py loaddata my_fixture.json

# برای بارگذاری داده‌های یک فایل YAML:
python manage.py loaddata products.yaml


مثال عملی
فرض کن یه وبسایت فروشگاهی داریم و میخوایم یه تست بنویسیم که بررسی کنه آیا محصولی با نام خاص در دیتابیس وجود داره یا نه. اول از همه، با استفاده از دستور dumpdata از مدل Product یه فیکسچر میگیریم:

python manage.py dumpdata app_name.Product --format json --indent 2 --output product.json

سپس، در تستمون، این فیکسچر رو لود می‌کنیم و محصول مورد نظر رو جستجو می‌کنیم:

from django.test import TestCase
from .models import Product

class ProductTestCase(TestCase):
fixtures = ['products.json']

def test_product_exists(self):
product = Product.objects.get(name='گوشی موبایل سامسونگ')
self.assertIsNotNone(product)


⭕️ نکات کلیدی فیکسچر به زبان ساده
ساختار فیکسچر: فیکسچرت باید شبیه به همون چیزی باشه که توی دیتابیس داری. مثلاً اگه یه مدل محصول داری، فیکسچرت هم باید یه محصول رو تعریف کنه.
اسم‌گذاری فیکسچر: به فیکسچرت یه اسم بامعنا بده تا بفهمی توش چه داده‌هایی داری. مثلاً products.json یعنی توش اطلاعات محصول‌ها هست.
مدیریت فیکسچر: وقتی تست‌های زیادی می‌نویسی، باید یه جوری فیکسچرهات رو مرتب کنی تا گم نشی. می‌تونی از فولدرهای مختلف یا ابزارهای مخصوص استفاده کنی.


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


⭕️ توجه: برای اطلاعات بیشتر و مثال های عملی تر، میتونید به مستندات رسمی جنگو مراجعه کنین.

#جنگو #تست #فیکسچر #برنامه_نویسی
فعلا که فلت بیشتره
از بیشتر به کمتر آموزش میزاریم😀
2
1 flet
2 pygame
3 PyQt5
4 tkinter
5 turtle
2
منتظر آموزش باشید😀✌️
1🍾1
دوستان آموزش کتابخونه فلت در راهه
منتظر باشید
برای دلگرمی ریکشن بزنید😀✌️
9
#آموزش
#فلت
#پایتون

آموزش دوره flet از مقدماتی تا پیشرفته 😍
در حال آماده‌سازی ....

برای آموزش های بیشتر پایتون و سی پلاس پلاس به کانال ما بپیوندید🥲
https://t.iss.one/programming_python_90

https://t.iss.one/programmingpythons
😁3
ادامه فلت رو بزاریم؟
Anonymous Poll
83%
اره
17%
نه
عمرا اگه با کاربرد کلید F8 در ورد آشنا باشی...!

یکی از کلید های تابعی به شدت کاربردی F8 هستش و به نظرم اون قدری که باید بهش توجه میشد تا الان نشده ؛ شما کلید F8 رو تا 5 مرتبه میتونید فشار بدید تا با هر بار فشردن یه قسمتی از متنتون سلکت بشه :)

• دو بار فشردن F8 : انتخاب کلمه
• سه بار فشردن F8 : انتخاب جمله
• چهار بار فشردن F8 : انتخاب پاراگراف
• پنج بار فشردن F8 : انتخاب کل سکشن

• فشردن همزمان F8 + Shift :
- بخش انتخاب شده رو کاهش میده.

https://t.iss.one/programming_python_90

https://t.iss.one/programmingpythons
3🤔1
پروکسی سرعتی بزاریم؟
Anonymous Poll
82%
اره
18%
نه
Server: Unknown
Port: 9090
Secret: FgMBAgABAAH8AwOG4kw63QtY2RueWVrdGFuZXQuY29tZmFyYWthdi5jb212YW4ubmFqdmEuY29tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@ProxyMTProto
2
from turtle import *
from random import choice

screen = Screen()

pens = 'black', 'indigo', 'red'
turtles = 'blue', 'green', 'yellow'
bgs = 'white', 'lightgreen', 'lightblue'
t = Turtle('turtle')
t.shapesize(10)
t.speed(0)
t.lt(90)
number = Turtle()
number.ht()
number.pu()
number.goto(-225, 300)
num = 0
number.write(f'${num:.4f}', font=('ffcx', 20))
sh = 10
def turtle(x, y):
global num, sh, pens, turtles, bgs
num += 0.0001
number.clear()

a = choice(pens)
b = choice(bgs)
c = choice(turtles)
number.pencolor(a)
screen.bgcolor(b)
t.color(c)

number.write(f'${num:.4f}', font=('ffcx', 20))

for i in range (1, 5):
if i <= 2:
sh += 1

elif i > 2:
sh -= 1

t.shapesize (sh)

onscreenclick(turtle)

done()
📚 آموزش الگوریتمی برای حل مسائل پیچیده ریاضی در پایتون 📚

سلام دوستان! امروز می‌خوایم یاد بگیریم چطور یک الگوریتم برای حل مسائل پیچیده ریاضی رو در پایتون پیاده‌سازی کنیم. این آموزش برای کسانی که می‌خوان اصول پایه حل مسائل ریاضی با استفاده از الگوریتم‌ها رو بفهمند بسیار مناسب هست.

1. تنظیمات اولیه 🛠️
ابتدا نیاز داریم که کتابخانه‌های ضروری پایتون رو وارد کنیم. برای این کار از کتابخانه‌ی math و numpy استفاده می‌کنیم.

نصب numpy
برای نصب numpy از دستور زیر استفاده کنید:
pip install numpy
2. ایجاد توابع مورد نیاز 📋
برای حل مسائل پیچیده ریاضی، نیاز به برخی توابع پایه‌ای داریم. در اینجا الگوریتمی برای حل معادلات خطی با استفاده از روش گاوس-ژردن (Gaussian Elimination) رو پیاده‌سازی می‌کنیم.

حل معادلات خطی با استفاده از روش گاوس-ژردن
import numpy as np

def gaussian_elimination(A, b):
n = len(b)
M = A

for i in range(n):
M[i] = M[i] / M[i, i]
b[i] = b[i] / M[i, i]
for j in range(i + 1, n):
ratio = M[j, i]
M[j] = M[j] - ratio * M[i]
b[j] = b[j] - ratio * b[i]

x = np.zeros(n)
for i in range(n - 1, -1, -1):
x[i] = b[i] - np.dot(M[i, i + 1:], x[i + 1:])
return x
3. تست الگوریتم 📈
حالا که الگوریتم رو پیاده‌سازی کردیم، می‌تونیم اون رو تست کنیم.

تعریف ماتریس A و بردار b
A = np.array([[2, 1, -1],
[-3, -1, 2],
[-2, 1, 2]], dtype=float)

b = np.array([8, -11, -3], dtype=float)

solution = gaussian_elimination(A, b)
print("راه‌حل معادلات:")
print(solution)
4. مزایا و کاربردهای استفاده از الگوریتم گاوس-ژردن

مزایا:
1. دقت بالا: روش گاوس-ژردن دقت بالایی در حل معادلات خطی دارد.
2. سرعت: این الگوریتم نسبت به روش‌های دیگر برای حل سیستم‌های خطی سریع‌تر عمل می‌کند.
3. سادگی پیاده‌سازی: الگوریتم گاوس-ژردن ساده و قابل فهم است و پیاده‌سازی آن پیچیدگی زیادی ندارد.

کاربردها:
1. حل مسائل فیزیک و مهندسی: این الگوریتم در حل مسائل مختلف فیزیک و مهندسی که به حل سیستم‌های خطی نیاز دارند، استفاده می‌شود.
2. بهینه‌سازی: در بسیاری از مسائل بهینه‌سازی، حل معادلات خطی ضروری است و این الگوریتم کاربرد دارد.
3. مدل‌سازی مالی: در تحلیل‌های مالی و اقتصادی برای مدل‌سازی و پیش‌بینی از این الگوریتم استفاده می‌شود.
https://t.iss.one/programming_python_90

https://t.iss.one/programmingpythons
1👍1🔥1