-
المساهمات
57 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة Abderrahmane Boulkenafet
-
-
باطار جانغو
كلما حاولت الدفع ببايبال , وبعد تسجيل معلومات المشتريعند الضغط علة "استكمال الشراء "
مع العلم اني اضفت
PAYPAL_RECEIVER_EMAIL ='sb-b8f9d30750293@business.example.com' PAYPAL_TEST =True
في settings
ايضا , هذه هي الدالة المسؤولة عن الform
paypal_checkout = { 'business':settings.PAYPAL_RECEIVER_EMAIL, 'amount':200, 'item_name':'just trying', 'invoice': '113', 'currency_code' :'USD', # 'notify_url': f"https://{host}{reverse('paypal-ipn')}", # 'return': f"https://{host}{reverse('payment-success')}", # 'cancel': f"https://{host}{reverse('payment-failed')}", 'notify_url': f"{host}{reverse('paypal-ipn')}", 'return': f"{host}{reverse('payment-success')}", 'cancel': f"{host}{reverse('payment-failed')}", } paypal_form = PayPalPaymentsForm(initial=paypal_checkout) return render(request,'checkout.html',{'paypal':paypal_form})
-
بتاريخ 4 ساعة قال ياسر مسكين:
يمكنك استخدام التوريث لإنشاء فئات فرعية من الصنف User بهذا الشكل:
from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): # خيارات نوع المستخدم USER_TYPE_CHOICES = ( ('vendor', 'Vendor'), ('customer', 'Customer'), ) # حقل نوع المستخدم user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES) # فئة فرعية لبائع class Vendor(User): # خاصية خاصة بالبائع vendor_specific_property = models.CharField(max_length=100) # فئة فرعية للعميل class Customer(User): # خاصية خاصة بالعميل customer_specific_property = models.CharField(max_length=100)
حيث بداية تقوم بتعريف فئة User التي تمثل المستخدم الأساسي وتحتوي على خيارات نوع المستخدم وحقل لتحديد نوع المستخدم. ثم ننشئ فئات فرعية (Vendor وCustomer) ترث من الفئة الأساسية User ونضيف الخصائص الخاصة لكل فئة. هذا الحل يسمح لنا بإنشاء مستخدمين من نوعين مختلفين (بائع وعميل) وتخصيص الخصائص الخاصة بهم بسهولة.
بتاريخ 4 ساعة قال Mustafa Suleiman:في البداية عليك تعريف صنف User الأساسي، حيث نستخدم AbstractUser من Django كقاعدة لصنف User، ويوفر AbstractUser جميع الخصائص والوظائف الأساسية للمستخدمين في Django، أي يمكننا إضافة أي خصائص إضافية نحتاجها إلى صنف User.
class User(AbstractUser): phone_number = models.CharField(max_length=20) address = models.CharField(max_length=255)
ثم تعريف صنف Vendor، ونرث من صنف User باستخدام class Vendor(User)، ونضيف خاصية type مميزة لصنف Vendor لتحديد نوع المستخدم، ونستطيع إضافة أي خصائص إضافية محددة لصنف Vendor نحتاجها.
class Vendor(User): type = models.CharField(max_length=50, default="vendor") company_name = models.CharField(max_length=255) business_license_number = models.CharField(max_length=20)
ثم تعريف صنف Customer، ونرث من صنف User باستخدام class Customer(User):، ونضيف خاصية type مميزة لصنف Customer لتحديد نوع المستخدم، أيضًا إضافة أي خصائص إضافية محددة لصنف Customer نحتاجها.
class Customer(User): type = models.CharField(max_length=50, default="customer") shipping_address = models.CharField(max_length=255) billing_address = models.CharField(max_length=255)
الآن نستخدم Vendor.objects.create_user لإنشاء بائع جديد ونمرر اسم المستخدم وكلمة المرور وخصائص أخرى إلى الطريقة create_user.
from django.contrib.auth import authenticate username = "test_vendor" password = "password1234" vendor = Vendor.objects.create_user(username=username, password=password, type="vendor") # ... (إتمام عملية تسجيل البائع)
أو نستخدم Customer.objects.create_user لإنشاء عميل جديد، ونمرر اسم المستخدم وكلمة المرور وخصائص أخرى إلى الطريقة create_user.
from django.contrib.auth import authenticate username = "test_customer" password = "password5678" customer = Customer.objects.create_user(username=username, password=password, type="customer") # ... (إتمام عملية تسجيل العميل)
وعليك استخدام الطريقة create_user الخاصة بكل صنف، واستيراد جميع النماذج (models) المُستخدمة في الكود.
نجحت الطريقة معي الى حد ما
هذا هو الكودUSER_TYPE_CHOICES = ( ('vendor', 'Vendor'), ('customer', 'Customer'), ) # Create your models here. class MyUser(AbstractUser): # خيارات نوع المستخدم pass # فئة فرعية لبائع class Vendor(MyUser): # خاصية خاصة بالبائع vendor_specific_property = models.CharField(max_length=100) store_deposit_account = models.CharField(max_length = 100 ,default='0000 0000 0000 0000') user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES , default='vendor') class meta: verbose_name ='vendor' # فئة فرعية للعميل class Customer(MyUser): # خاصية خاصة بالعميل customer_specific_property = models.CharField(max_length=100) lives_in=models.CharField(max_length=50 ,default ='Algeria') user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES , default='customer') class meta: verbose_name ='vendor'
admin.site.register(MyUser) admin.site.register(Customer) admin.site.register(Vendor)
لكنها تظهر هكذا في صفحة الadmin رغم انني حاولت تحديد الverbose_name
فكيف حل هذه المشكلة؟ايضا ,هل هناك طريقة للحد من عدد الحقول في صفحة الadmin و اظهار حقول معينة عند الانشاء؟
ف..
هذا اكثر من المرغوب فيهايضا @Mustafa Suleiman هل هناك طريقة لفعل هذا من الterminal ؟
vendor = Vendor.objects.create_user(username=username, password=password, type="vendor")
- 1
-
اريد صناعة عدة اصناف ترث من الصنف User حيث اضيف لكل صنف اشياء تخصه بحث استعملها لانشاء مستخدمين
مثلا الصنف vendor فيه خاصية
type = models.charField(max_length = 20 , default ='vendor')
و عدة خواص اخرى , في نفس الوقت
عند تسجيل بائع جديد , اريد استخدام هذا الصنف للتسجيل بدلا من Userو ايضا صنف customer له عدة خواص مختلفة عن ما يرث منه
مثلا
type = models.charField(max_length = 20 , default ='customer')
, يرث ايضا من user , و يستعمل لانشاء مستخدمين بدلا من User
حاولت فعل هذا لكنني تلقيت اخطاء كثيرة
class Vendor(AbstractUser): type = models.CharField( max_length=50,default = "vendor") def __init__(self, username="test1",password='pass_test',is_staff=False,*args: Any, **kwargs: Any) -> None: super().__init__(username,password,*args, **kwargs)
- 1
مشكلة (رفض المعاملة بموجب الاتفاقيات الدولية) عند الدفع ببايبال
في بايثون
نشر
كما يوضح الاسم ,فالمشكلة ليست بسبب الكود البرمجي , بل بسبب اتفاقيات , في هذه الحالة
تم رفض المعاملة بسبب ان الحساب المستخدم لتلقي المال (حساب العمل :business account) كان مسجل في الجزائر
بمجرد استخدام حساب امريكي مكانه
تمت العملية بنجاح