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

Amer Abdallah

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

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

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

  • عدد الأيام التي تصدر بها

    1

كل منشورات العضو Amer Abdallah

  1. أرغب في الاحتفاظ بصفحة في ذاكرة التخزين المؤقت حتى يعلق أحد الأشخاص على إحدى المشاركات. تبدو هذه فكرة رائعة لأن الأشخاص نادرًا ما يعلقون، لذا فإن الاحتفاظ بالصفحات في memcached إلى أن يقوم أحد بعمل تعليق أمرًا رائعًا. لذا فإن الحل الذي أفكر فيه هو: @cache_page( 60 * 15, "blog" ); def blog( request ): # code ... وبعد ذلك سأحتفظ بقائمة بجميع مفاتيح التخزين المؤقت المستخدمة لملف العرض blog وبعد ذلك يكون لدي طريقة لإنهاء مساحة ذاكرة التخزين المؤقت "blog". لكنني أتساءل عما إذا كان هناك طريقة أفضل للقيام بذلك؟
  2. أحاول الحصول على المستخدم الحالي (الذي قام بعمل الطلب request) في داخل نموذجserializers، لقد جربت الكود التالي، ولكنه لا يعمل. class PostSerializer(serializers.ModelSerializer): class Meta: model = Post def save(self): user = self.context['request.user'] كيف يمكنني الوصول إلى request.user من صنف Serializer الخاص بي؟
  3. لدي وسم cache في القالب الرئيسي في مشروع جانغو Django: {% cache 5000 posts %} Content goes here {% endcache %} عندما أقوم بإضافة منشور جديد من خلال لوحة تحكم جانغو Django، أريد إبطال ذاكرة التخزين المؤقت هذه، وبالتالي يظهر المحتوى الأحدث: class PostsAdmin(admin.ModelAdmin): def save_model(self, request, obj, form, change): super(postsAdmin, self).save_model(request, obj, form, change) cache.delete('posts') لكن ذاكرة التخزين المؤقت تبقى صالحة! ويظهر المحتوى القديم أيضًا، ما الخطأ هنا؟ وما هي الطريقة الصحيحة لإبطال التخزين المؤقت في جوء معين؟
  4. لدى جانغو Django العديد من الحقول الرقمية المتاحة للاستخدام في النماذج models. فهل هناك أي طريقة لتقييد حقل معين لتخزين الأرقام فقط ضمن نطاق معين ، على سبيل المثال يمكن للحقل تخزين الأرقام من 0.0 إلى 5.0 فقط؟ كيف يمكن عمل ذلك على حقل من نوع IntegerField في جانغو Django؟
  5. أريد إنشاء نموذج PostModel يحتوي على حقل من نوع ForeignKey يشير إلى المعرف الأساسي id لكائن آخر من نفس النموذج، أي شيء كالتالي على سبيل المثال: class PostModel(models.Model): parent = models.ForeignKey(PostModel) هل يمكن عمل ذلك في قواعد البيانات (أي أن يشير مفتاح أجنبي ForeignKey إلى كائن آخر من نفس النموذج (في نفس الجدول))؟ أم أن هناك طرق أخرى للوصول إلى نفس النتيجة؟ وكيف أقوم بهذا؟
  6. كيف يمكنني تغيير اسم أحد النماذج models من "Post" إلى "Posts" في لوحة التحكم Admin في إصدار 3.2 من جانغو Django؟ ومع ذلك حاولت أن أقوم بتغير إعدادات modeladmin إلا أن إعداد verbose_name_plural داخل النموذج modeladmin لا يفعل شيئًا. ولا أعرف سبب المشكلة؟
  7. أريد أن أكتب اختبار وحدة Unit Test للأمر معين في manage.py والذي يقوم بعملية في جدول في قاعدة البيانات. كيف يمكنني استدعاء هذا الأمر مباشرة من داخل الكود؟ لا أرغب في تنفيذ الأمر على على shell الخاص بنظام التشغيل يدويًا لأنني حينها لن أستطيع استخدام بيئة الاختبار التي تم إعدادها باستخدام manage.py test. لذلك أريد أن أعرف كيف يمكنني استدعاء أمر manage.py مخصص مباشرةً من داخل ملف اختبار test؟
  8. لدي نموذج يمثل المنشورات التي أقدمها على موقعي. وأود أن أعرض بعضًا من العشوائية. لكنني أواجهة مشكلة في الحصول على سجل record عشوائي من قاعدة البيانات. حاول أن أكتب الكود التالي: number_of_records = Post.objects.count() random_index = int( random.random() * number_of_records ) + 1 random_post = Post.get(pk = random_index) لا يبدو أن من الصحيح حساب عدد كل الصفوف للحصول على سجدل عشوائي. هل توجد أي خيارات أخرى كيف تمكنني من القيام بذلك؟
  9. أحاول إنشاء عمليات ترحيل migrations داخل تطبيق جانغو Django موجود باستخدام الأمر makemigrations ولكنه يظهر الرسالة No changes detected عادةً ما أقوم بإنشاء تطبيقات جديدة في المشروع باستخدام الأمر startapp ولكني لم أستخدمه لهذا التطبيق عندما قمت بإنشائه. بعد محاولة أكتشاف الأخطاء، اكتشفت أنه لا يتم إنشاء ملفات ترحيل البيانات migrations لأن المجلد migrations غير موجود في أحد التطبيقات. هل سيكون من الأفضل إنشاء المجلد إذا لم يكن موجودًا أم سوف يسبب خطأ بعد ذلك أو يؤدي لمشكلة في قاعدة البيانات؟
  10. لقد قمت بتغيير اسم التطبيق في جانغو Django عن طريق إعادة تسمية المجلد وجمل الإستدعاء imports وجميع (القوالب templates / الفهارس indexes). لكني الآن أحصل على هذا الخطأ عندما أحاول تشغيل المشروع عن طريق الأمر التالي: python manager.py runserver الخطأ الذي يظهر كالتالي: Error: Could not import settings 'appname.settings' (Is it on sys.path?): No module named settings كيف يمكنني تصحيح هذا الخطأ وحلّه؟ أو كيف يمكنني إعادة تسميه مشروع جانغو Django؟
  11. أحاول أن أقوم بإرسال رسالة إلى البريد الإلكتروني، لذلك قمت ببعض التعديلات في ملف settings.py الخاص بي: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'localhost' EMAIL_PORT = 1025 EMAIL_HOST_USER = '' EMAIL_HOST_PASSWORD = '' EMAIL_USE_TLS = False وكود إرسال البريد الإلكتروني الذي لدي كالتالي: from django.core.mail import EmailMessage email = EmailMessage('my title', 'Hello, World!', to=['example@gmail.com']) email.send() بالطبع ، إذا قمت بإعداد خادم تصحيح أخطاء debugging server من خلال الأمر التالي، فيمكنني رؤية البريد الإلكتروني في الـ terminal: python -m smtpd -n -c DebuggingServer localhost: 1025 لكن كيف يمكنني إرسال البريد الإلكتروني ليس إلى خادم التصحيح ولكن إلى example@gmail.com، أي كيف يمكنني إرسال رسالة حقيقية إلى بريد إلكتروني حقيقي؟
  12. أنا أستخدم django-rest-framework-simplejwt لتسجيل المستخدم، ومن خلال كود التالي يمكنني الحصول على refresh token و access token بدون مشكلة: class RegistrationSerializer(serializers.ModelSerializer): pwd = serializers.CharField(write_only=True) tokens = serializers.SerializerMethodField() class Meta: model = UserProfile fields = ['username', 'mail', 'pwd', 'tokens'] def get_tokens(self, user): user = UserProfile( mail=self.validated_data['mail'], username=self.validated_data['username'] ) pwd = self.validated_data['pwd'] user.set_password(pwd) tokens = RefreshToken.for_user(user) refresh = text_type(tokens) access = text_type(tokens.access_token) data = { "refresh": refresh, "access": access } return data def save(self): user = UserProfile( mail=self.validated_data['mail'], username=self.validated_data['username'] ) pwd = self.validated_data['pwd'] user.set_password(pwd) user.save() return user المشكلة هي أنه في كل مرة أقوم فيها بإنشاء مستخدم ، يمكنني الحصول على كل من refresh token و access token ، ولكن في قاعدة البيانات لا يمكنني العثور على هذه الرموز tokens. لذا أعتقد أنني لم أقم بتخزينها ، فهل يجب علي تخزين هذه الرموز في قاعدة البيانات؟ وكيف أقوم بذلك؟
  13. في الطبيعي يكون رد مصادقة simpleJWT من جانغو Django مشابه للتالي: { "refresh":"" "access": "" } كيف يمكنني أن أعدل على الرد السابق لكي أضيف خصائص آخرى مثل: { "username": "", "detail": "", "accessToken": "", "refreshToken": "" }
  14. أحاول البحث عن كائنات من نموذج User من خلال قيمة الحقل DateTimeField. من خلال الكود التالي: User.objects.filter(datetime_registred=datetime.date(2021,9,12)) أحصل على كائن queryset فارغ، أعتقد لأنني لم أحدد وقت في عملية البحث، حيث وضعت تاريخ فقط، لكنني أريد أي وقت خلال اليوم المحدد. أي أني أريد تحديد كل المستخدمين الذين سجلوا خلال هذا اليوم هل هناك طريقة سهلة في Django للقيام بذلك؟
  15. أحاول إنشاء قالب template لعرض قيم حقول نموذج المحدد ، إلى جانب أسماء الحقول. على سبيل المثال، لنفترض أن لدي النموذج التالي: class User(Model): name = CharField(max_length=150) email = EmailField(max_length=100, verbose_name="E-mail") أرغب في إخراج البيانات السابقة في قالب معين لتكون النتيجة كالتالي: name My Full Name E-mail mail@example.com لذلك أحاول أن أقوم بعمل القالب بالشكل التالي: <table> {% for field in fields %} <tr> <td>{{ field.name }}</td> <td>{{ field.value }}</td> </tr> {% endfor %} </table> بالطبع الكود السابق لن يعمل، ولكن هذا ما أحاول أن أقوم به، هل هناك طريقة يوفرها جانغو Django للقيام بذلك؟
  16. كيف أحصل على اسم المجال/النطاق Domain لموقعي الحالي من داخل قالب في جانغو Django؟ لقد حاولت البحث في وسوم tags أوالمرشحات filters تقوم بهذا الأمر لكنني لم أتوصل إلى شيء. هل يجب أن أحصل على meta data من الطلب الذي يرسله المتصفح أم أن هناك طرق أخرى؟
  17. أرغب في تحديث جدول في قاعدة البيانات باستخدام جانغو Django، بحيث يتم تنفيذ جملة SQL التالية في النهاية: update tbl_name set name = 'new name' where name = 'old name' حاولت أن أقوم بالكود التالي، لكن أعتقد أنه ليس من العملي أن أقوم بالمرور على كل كائن في قاعدة البيانات وأغير قيمة name ثم أحفظ الكائن الجديد: list = ModelClass.objects.filter(name = 'bar') for obj in list: obj.name = 'foo' obj.save() هل هناك طريقة أكثر فعالية وسرعة من الكود السابق؟
  18. أريد تشغيل إجراء خاص في التابع save لكائن نموذج model في جانغو Django عندما أقوم بحفظ سجل جديد (وليس عند تحديث سجل موجود بالفعل) لذلك كنت أتسأل هل التحقق من (self.id! = None) ضروري وكافي لضمان أن السجل جديد (أي أنها عملية create) ولا يتم تحديثه (وليست عملية update)؟ أهل توجد حالات خاصة قد تؤدي إلى تنفيذ الكود في حالة عمل تحديث update أيضًا؟
  19. قرأت في توثيق جانغو Django من قبل أنه يمكن أن يتم تشغيل إختبار test واحد ومحدد من خلال الأمر: ./manage.py test posts.PostTestCase ويفترض هذا الأمر أن هناك اختبارات في ملف test.py. إذا كان هذا صحيحًا، فإن هذا الأمر يعمل كما هو متوقع. وقمت بعمل بعض الإختبارات في مجلد tests، ويمكنني تشغيلها من خلال الأمر: ./manage.py test my_app لكن المشكلة تظهر عندما أريد تشغيل إختبار واحد فقط، كالتالي: ./manage.py test my_app.tests.post_tests.PostTestCase ValueError: Test label 'my_app.tests.post_tests.PostTestCase' should be of the form app.TestCase or app.TestCase.test_method لذلك حاولت أن أغير الأمر كما وضحت رسالة الخطأ، لكن ظهر لي خطأ بأن هذا إختبار غير موجود: ./manage.py test my_app.PostTestCase ValueError: Test label 'my_app.PostTestCase' does not refer to a test ما سبب هذه المشكلة؟ وكيف أقوم بتشغيل إختبار واحد في جانغو Django؟
  20. أحاول أن أقوم بإرسال طلب من نوع post من خلال Ajax في jQuery، لكن كل الطلبات تعيد نفس الخطأ وهو: [18/Sep/2021 21:58:29] "POST /comments/ HTTP/1.1" 403 2332 أنا متأكد من أنني هناك شيئًا ما مفقود، لكنني لا أعرف ما هو، لأنني متأكد من أن الطلبات التي أرسلها إلى الخادم صحيحة. كيف أحل هذا الخطأ؟
  21. حاولت أن أقوم بإرجاع رد response عبارة عن خطأ Forbidden من خلال الكود التالي: raise HttpResponseForbidden() ولكن ظهر لي الخطأ التالي: exceptions must be old-style classes or derived from BaseException, not HttpResponseForbidden كيف أقوم بإرجاع خطأ Forbidden في جانغو Django؟
  22. في الماضي كان هناك طريقة للحصول على عنوان URL الخاص بأي كائن object في لوحة التحكم وذلك من خلال اسم ملف العرض view مع دالة reverse كالتالي: reverse('django.contrib.admin.views.main.change_stage', args=['My App', model_name, id_]) لكن يبدو أن هذه الطريقة لم تعد تعمل في الإصدار الحالي من جانغو Django، وأنا أحاول التحديث إلى أحدث إصدار من جانغو Django، وهذه إحدى العقبات التي واجهتها ،لا أجد طريقة للحصول على عنوان URL الخاص بلوحة التحكم تعمل بعد الآن. كيف يمكنني الحصول على عنوان URL الخاص بلوحة التحكم لكائن معين في جانغو Django؟
  23. أكتب صنف وسيط Middleware وأريد تنفيذه مرة واحدة فقط عند بدء التشغيل. بحيث يقوم هذا لكود بضبط بعض الإعدادات وتهيئة ققاعدة البيانات بشكل معين بدلًا من القيام بهذه المهمة يدويًا عند تشغيل مشروع جانغو Django. كيف أقوم بهذا الأمر في جانغو Django؟ أنا أستخدم الإصدار 1.7 من جانغو Django
  24. أحاول تصفية المستخدمين حسب حقل مخصص في كل ملف تعريفي خاص بالمستخدم ويسمى الحقل profile. وهو عبارة عن حقل من نوع int، وتكون قيمته بين 0 و 3. إذا قمت بالتصفية باستخدام علامة يساوي ، فسأحصل على قائمة بالمستخدمين بالمستوى المختار كما هو متوقع: users = User.objects.filter(profile__level = 0) لكن عندما أحاول التصفية باستخدام علامة أقل من: users = User.objects.filter(profile__level < 3) يظهر لي الخطأ التالي: global name 'profile__level' is not defined ما الخطأ الذي قمت به هنا وكيف أوم بإصلاحه؟
  25. في Django ، ما الفرق بين الإستعلامين التاليين: Post.objects.values_list('comment_id', flat=True).distinct() والإستعلام التالي: Post.objects.values('comment_id').distinct() هدفي هو الحصول على قائمة بمعرفات التعليقات IDs تحت كل مقالة. لقد قرأت توثيق جانغو Django، وفي الواقع استخدمت كلا الأسلوبين، ويبدو أن النتائج متشابهة بشكل كامل. ما هو الفرق بين إستخدام كلا الأسلوبين السابقين؟
×
×
  • أضف...