اذهب إلى المحتوى

Mohssen A Mohssen

الأعضاء
  • المساهمات

    317
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Mohssen A Mohssen

  1. أنا أستخدم flask-sqlalchemy في أحد المشاريع، وأريد أن أقوم بتنفيذ استعلام في قاعدة البيانات لحساب عدد السجلات في الجدول.

    أعلم أنه يمكنني استخدام table.query.filter_by.count مباشرةً ولكن لا أريد تطبيق مرشح filter معين لكي يتم حساب عدد السجلات بالكامل، كيف أقوم بهذا الأمر؟

    • أعجبني 1
  2. أريد تحديد بعض العمليات (تشغيل دالة معينة) لنموذج model عند إنشائه فقط. أي شيء مثل before_create مثلًا. هل هذا ممكن؟

    حاولت البحث عن حل ولكن وجدت أن توثيق جانغو Django يعرض أمثلة فقط لعمل overriding للتوابع save و delete فقط

    كيف أقوم بتشغيل بعض الأكواد عند إنشاء كائن جديد من النموذج instance of model في جانغو Django؟

    • أعجبني 1
  3. لدي نموذج بالشكل التالي:

    class Post(models.Model):
        module = models.Charfield(max_length=255)
        state = models.ForeignKey(Status)
        tags = models.ManyToManyField(Tag, blank=True, null=True)

    الآن أحاول أن أقوم بالحصول على المنشورات التي تحتوي على وسم tag معين في الحقل tags، لذلك حاولت إستخدام المرشح contains ولكن يبدو أنه يعمل مع النصوص فقط

    Post.objects.filter(tags__contains=self.tag.id)
    

    ما هي الطريقة الصحيحة للحصول على المنشورات التي تحتوي على وسم tag معين؟

  4. لدي تطبيق بسيط مبني بإستخدام فلاسك Flask بالشكل التالي:

    @app.route('/submit', methods=['GET', 'POST'])
    def submit():
        if request.method == 'POST':
            title = request.form['title']
            content = request.form['content']
            post_entry = models.Post(title=title, content=post)
            db.session.add(post_entry)
            db.session.commit()
            
            return redirect(url_for('my-form'))
        else:
            return render_template('error.html')
    
    @app.route('/my-form')        
    def my_form():
        posts = []
        for post in session.query(models.Post):
            posts.append((post.title, post.content))
        return render_template('posts.html', posts=posts)

    كما هو ظاهر من الكود، فإن أحد المسارات يقوم بحفظ منشور في قاعدة البيانات ومسار آخر يقوم بعرض بعض المنشورات، وهنا الكود الخاص بالإستمارة form:

    <form action='/submit' method = "post">
        title: <input name="title" type="text">
        main: <input name="content" type="text">
        <button type="submit">Publish</button>
    </form> 

    المشكلة أن كلما أقوم بإرسال الإستمارة من خلال الضغط على زر Publish يظهر لي الخطأ التالي:

    Method Not Allowed: The method is not allowed for the requested URL.

    بالرغم من أني تأكدت من إضافة المعامل methods إلى المسار submit إلا أن الخطأ مازال يظهر بدون فائدة.

    ما سبب هذا الخطأ هنا؟

    • أعجبني 1
  5. لدي متجر صغير مبني بإستخدام جانغو Django، ولدي فضول أي نوع من الحقول سيكون أفضل كحقل لتخزين العملات Currency؟

    سأقوم بعمليات بسيطة على أسعار المنتجات مثل حساب الخصم discount. وأخطط للاحتفاظ برقمين بعد الصفر (مثل 15.99$) وأغلبية الوقت إذا كانت هذه الأرقام العشرية صفرًا، فسأخفي هذه الأرقام وأعرضها على أنها "15" فقط بدون كتابة أي شيء بجانب العلامة العشرية.

    هل أستعمل DecimalField أم FloatField وما الفرق بينهما؟

    • أعجبني 1
  6. بعد عمل مشروع بإستخدام جانغو Django وجدت أن الموقع يصبح بطيء بعض الشيء، كيف أتأكد من سرعة الأكواد؟

    في PHP و Laravel يمكن أن أستخدم أدوات مثل Debug bar ، فهل توجد أداة أو طريقة لفحص الكود ومعرفة إستعلامات SQL التي تتم لتحديد مكان الخلل الذي يسبب بطء الموقع؟

    • أعجبني 1
  7. تعلمت في الفترة الماضية كيفية إستخدام Django ORM ، وكنت أتساءل عما إذا كان من الممكن استخدام Django ORM في "الاتجاه المعاكس".

    هل من الممكن إنشاء نماذج models من مخطط قاعدة بيانات database schema موجود بالفعل لدي من مشروع قديم (بالرغم من أن المشروع لا يستعمل جانغو Django من الأساس)

    هل من ممكن القيام بهذا الأمر ؟

    • أعجبني 1
  8. لماذ يجب أن أستعمل abstract model في جانغو Django بدلًا من صنف عادي في بايثون، ما المشكلة في الكود التالي:

    class Post:
       title = models.CharField(...)
    
       def get_content(self):
           return self.content

    لماذا علي تحويله إلى الشكل التالي:

    class Post(models.Model):
       title = models.CharField(...)
    
       def get_content(self):
           return self.content
    
       class Meta:
           abstract = True

    ما الفرق بين الصنفين السابقين؟ وهل توجد حالات تجعلني أستعمل صنف بايثون عادي؟

  9. في الكود التالي أقوم بحفظ منشور post في قاعدة البيانات:

    MyModel.objects.create(title="post 1", content="Hello, Wolrd")

    كيفية الوصول إلى قيمة id الخاصة بالمنشور الذي تم حفظه في قاعدة البيانات للتو. هل هناك طريقة للحصول على هذا المعرف id واستخدامه في مكان آخر في الكود الخاص بي؟

    • أعجبني 1
  10. لدي نموذجين Models في متجر بسيط مبني بإستخدام جانغو Django على الشكل التالي:

    class Tag(models.Model):
        name = models.CharField(max_length=255)
    
    class Product(models.Model):
        name = models.CharField(max_length=255)
        tag = models.ForeignKey(Tag)

    كما يظهر من الكود فإن كل منتج لديه وسم tag

    حاولت أن أقوم بحساب عدد المنتجات في كل وسم ولكن لم أستطع القيام بهذا الأمر، أريد أن أقوم بتنفيذ شيء مشابهة لجملة SQL التالية:

    select tag_id, count(id) from product group by tag_id;

    كيف أقوم بهذا الأمر في جانغو Django؟

    • أعجبني 1
  11. أريد تقييد الوصول إلى عناوين URL التي يتم التعامل معها بواسطة ملفات العرض لجانغو Django Views.

    أعلم أن هناك المزخرف login_required decorator الذي يقوم بهذه المهمة.

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def myView(request):
        # ...

    ولكن لم أتمكن من العثور على طريقة لإعادة توجيه المستخدم إلى صفحة أخرى مثل صفحة تسجيل الدخول أو تسجيل حساب جديد في حالة لم يكن المستخدم مُسجل في الموقع، كيف أقوم بهذا الأمر؟

    • أعجبني 1
  12. لدي نموذج بسيط للغاية ويحتوي على حقل من نوع ImageField بالشكل التالي:

    image = models.ImageField('image', upload_to='uploads/')

    أريد أن أسمح للمستخدم بكتابة عنوان URL خاص بصورة موجودة على الإنترنت ثم تخزين هذه الصورة في هذا الحقل.

    كيف أقوم بتخزين صورة online في هذا الحقل؟

    أعتقد أنه يجب تحميل الصورة في كود جانغو Django ثم تخزينها في ملف ما، كيف أقوم بهذا الأمر؟

    • أعجبني 1
  13. في مشروع جانغو Django الخاص بي، أسمح للمستخدمين برفع صورة شخصية ليتم عرضها في صفحة كل مستخدم، ولكن أريد أن أتأكد أن الملف المرفوع عبارة عن صورة وليس أي نوع آخر من الملفات، كيف أقوم بالتحقق من الملف في جانغو Django؟ أو هل توجد طريقة لجعل FileField يقبل نوع معين فقط من الملفات (صورة، فيديو ، صوت ، إلخ)؟

    • أعجبني 1
  14. لدي مشروع جانغو Django، ويحتوي هذا المشروع على عدد من المستخدمين الوهمين Fake Users للتجربة وإختبار الموقع، الآن أريد أن أقوم بتغير كلمة السر الخاصة بأحد المستخدمين للمستخدمين، لذلك قمت بزيارة صفحة password_change ولكني نسيت كلمة السر الأصلية الخاصة بالمستخدم، هل يمكنك أن أقوم بتغير كلمة السر بدون إستخدام كلمة السر القديمة؟

    أيضًا هل يمكن إستخدام سطر الأوامر فقط لتغير كلمة السر الخاصة بأحد المستخدمين؟

    • أعجبني 1
  15. لدي مشروع جانغو Django خاص بي، ويحتوي المشروع على العديد من الملفات والقوالب templates وملفات الخطوط وCSS وأحاول الآن أن أقوم بتنظيم هذه الملفات والمجلدات، وكنت أتسأل ما هو أفضل مكان لوضع القوالب templates في مشروع جانغو Django؟

    هل أقوم بعمل مجلد templates داخل المشروع project مباشرة أم داخل التطبيق App؟ أم أن هناك طريقة أخرى متعارف  عليها لتنظيم ملفات المشروع؟

     

    • أعجبني 1
  16. لدي نموذج في أحد مشاريع جانغو Django وأرغب في تصفية النموذج حسب طول نص العمود password، حاولت إستخدام الكود التالي، ولكن يبدو أنه هذه ليست الطريقة الصحيحة للقيام بهذا الأمر:

    Model.objects.filter(len(password) > 8)

    حيث أن المتغير password عبارة عن TextField

    • أعجبني 1
  17. لدي نموذج Model في جانغو Django باسم ويحتوي على التابع has_related_object والذي يقوم بالتحقق من وجود كائنات مرتبطة بهذا النموذج:

    class Store(base):
          name =  models.CharField(max_length=255, blank=False, null=False)
    
      def has_related_object(self):
            return (self.seller is not None) and (self.products is not None)
    
    
    class Seller(base):
          name =  models.CharField(max_length=255, blank=False, null=False)
          store = models.OneToOneField('Store', related_name="seller")

    ولكن المشكلة هنا هي ظهور الخطأ RelatedObjectDoesNotExist عندما أستدعي هذا التابع، بالشكل التالي:

    RelatedObjectDoesNotExist: Store has no seller.

    ما سبب هذا الخطأ؟ وكيف أقوم بإصلاحه؟

    • أعجبني 1
  18. قمت بكتابة بعض إختبارات Unit Tests في أحد مشاريع جانغو Django الخاصة بي، وقمت بكتابة إختبار لأحد الصفحات ولكن لم أنشيء هذه الصفحة بعد، وأريد أن يتم تخطي هذا الأختبار عند تشغيل كل الإختبارات عندما أقوم أقوم بتنفيذ الأمر manage.py test 

    هل توجد طريقة لتخطي إختبار معين بدلًا من إزالته يدويًا؟

    • أعجبني 1
  19. في جانغو Django يمكن تعيين عنوان URL مخصص لتسجيل الدخول. ولكن هل يمكن أن أتحكم في عنوان URL الذي يتم إعادة التوجيه إليه بعد تسجيل الخروج Logout. أريد أن يتم إعادة التوجيه إلى الصفحة الرئيسية على سبيل المثال، كيف أقوم بهذا الأمر؟

     

    • أعجبني 1
  20. لدي مشروع مبني بإستخدام جانغو Django، ولكن بسبب أني أقوم بعمل الكثير من إستعلامات SQL أجد أن المشروع أصيح بطيئًا بعض الشيء، وعند البحث عن حل للمشكلة سمعت عن redis-cache ، ولكن لا أعرف من أين أبدأ في إستخدامه.

    هل يتم استخدامه كطبقة بين جانغو Django و بين قاعدة البيانات الخاص بي، عن طريق تخزين استعلامات SQL بطريقة أو بأخرى؟ أم أنه من المفترض أن يتم استخدامها مباشرة كقاعدة بيانات بدلًا من MySQL بالكامل؟

    • أعجبني 1
  21. ما الذي يجعلني أستخدم الكود التالي بدلًا من إنشاء نموذج form بإستخدام الصنف ModelForm وإستدعاء التابع is_valid للتحقق من النموذج form و model معًا:

    save(commit=False)

    متى يجب أن أستعمل save(commit=False) من الأساس؟ هل هناك مواقف حيث قد يكون هذا الكود مفيدًا؟

     

    • أعجبني 1
  22. قمت بعمل بعض الأخطاء في قاعدة البيانات والآن أريد إزالة كافة الجداول من قاعدة بيانات

    حاولت إستخدام الأوامر التالية:

    python3 manage.py sqlflush blog

    لكن يبدو أن هذا الأمر لم يعد يعمل، حيث أن كل ما يقوم به هو طباعة جملة SQL لحذف الجداول ولكن لا يتم حذفهم بالفعل من قاعدة البيانات، هل هناك طريقة للقيام بهذا الأمر باستخدام  manager.py أو بإستخدام الأمر django-admin؟

    • أعجبني 1
  23. لا أريد أن يتم إنهاء الجلسة session عند عمل commit ، لذلك بحثت في Flask-SQLAlchemy ووجدت الخاصية expire_on_commit ولكنها لا تعمل، حاولت أن أنفذ الكود التالي:

    db.session.expire_on_commit = False

    لكن لم يتأثر التطبيق على الإطلاق، كيف أستخدم الخاصية expire_on_commit في Flask-SQLAlchemy؟

  24. إذا أردت الحصول على قيم بعض الإعدادات الموجودة في جانغو أستخدم أحيانًا الكود التالي:

    import settings

    وفي بعض الأحيان نستخدم الكود التالي:

    from django.conf import settings

    لكن ما الفرق بينهما؟ ومتى أستخدم كلًا منهما؟

×
×
  • أضف...