سامح أشرف
الأعضاء-
المساهمات
2934 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
56
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو سامح أشرف
-
يمكنك أن تتبع الخطوات التالية لتغيير اسم التطبيق في مشروع جانغو Django: أعد تسمية المجلد الموجود في جذر مشروعك (مجلد المشروع الرئيسي) غيّر أي مراجع لتطبيقك وكل تبعياتها dependencies، على سبيل المثال، الملفات views.py و urls.py و management.py و settings.py قم بتعديل جدول قاعدة البيانات django_content_type باستخدام الأمر التالي: UPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>' إذا كانت لديك نماذج، فسيتعين عليك إعادة تسمية جداول النماذج. بالنسبة إلى postgreSQL و mysql، استخدم الأمر التالي: ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName إن كنت تستخدم الإصدار 1.7 أو أعلى من جانغو Django، فيجب أن تقوم بتحديث جدول django_migrations لتجنب إعادة تشغيل عمليات الترحيل السابقة: UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>' إذا كانت Meta Class الموجود في الملف models.py يحتوي على app_name، فتأكد من إعادة تسمية ذلك أيضًا. إذا قمت بوضع مجلدات ثابتة static أو قوالب templates داخل تطبيقك، فستحتاج أيضًا إلى إعادة تسميتها. على سبيل المثال، أعد تسمية OldAppName /static/OldAppName إلى NewAppName/static/NewAppName. لإعادة تسمية نماذج جانغو Django، ستحتاج إلى تغيير django_content_type.name في قاعدة البيانات. بالنسبة لـ postgreSQL و mysql، استخدم الأمر التالي: UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>' يجب إزالة المجلد __pycache __ الموجود داخل التطبيق، وإلا ستحصل على خطأ من نوع EOFError: EOFError: marshal data too short when trying to run the server بعد ذلك يمكنك إعادة تشغيل المشروع بدون مشكلة وستجد أن اسم المشروع قد تغير في كل الإماكن.
- 2 اجابة
-
- 1
-
لأرسل رسائل البريد الإلكتروني تحتاج إلى خادم SMTP حقيقي. إذا لم ترغب في تثبيت خادم SMTP خاص بك، فيمكنك العثور على الشركات التي توفر خادم SMTP بمقابل مادي أو تستخدم بديل مجاني مثل Google نفسها. أستخدام Gmail كخادم SMTP لـ Django أسهل بكثير من التعامل أي خادم آخر. ولعمل ذلك تحتاج إلى تعديل إعدادات المشروع. في ملف settings.py: EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'me@gmail.com' EMAIL_HOST_PASSWORD = 'password' قم بإضافة البريد الإكتروني الخاص بك وإستخدم كلمة سر مؤقتة من خلال ما يسمى بـ less secure apps في جوجل (لا تستخدم كلمة المرور الخاصة بك في أي مكان ظاهر مثل ملف settings.py أو غيره من الملفات لأنك لا تعلم من سيمكنه قراءة هذا الملف في المستقبل). ملاحظة: بداية من 2016 لم تعد جوجل تقبل إستخدام كلمة المرور بالشكل السابق، بدلًا من ذلك أصبحت جوجل توفر ما يسمى بالتطبيقات الأقل أمانًا من خلال الذهاب Security > Account permissions > Access for less secure apps، حيث سوف تقوم بالحصول على كلمة سر مخصصة لإستخدامها في هذا التطبيق/المشروع بالتحديد ولا يمكن إستخدام كلمة السر هذه للدخول إلى حسابك بالكامل، بل فقط تستخدم لإرسال رسائل البريد الإلكتروني (أو حسب إعدادات التطبيق في جوجل). من الأفضل أيضًا أن تضع البريد الإلكتروني وكلمة المرور في متغيرات بيئة environment variable وإستخدام هذه المتغيرات في ملف settings.py بعد إتمام الإعدادات السابقة سيمكنك أن ترسل الرسائل من خلال الكود التالي: from django.core.mail import EmailMessage emails = ['another@email.com'] email = EmailMessage('Subject', 'Body', to=emails) email.send()
- 2 اجابة
-
- 1
-
يمكن استخدام JWT للمصادقة بدون قاعدة بيانات أو ما يسمى بـ database-less authentication. لأنه يشفر البيانات اللازمة للمصادقة في رموز tokens. حيث سيكون تطبيقك قادرًا على مصادقة المستخدمين بعد فك الرموز tokens بالبيانات المضمنة فيه. ولكن إذا كنت تريد تخزين رموز tokens في simplejwt ، فيمكنك استخدام نموذج OutstandingingToken لتخزين الرموز في قاعدة البيانات. لكن قبل استخدام OutstandingToken، تأكد من وضع rest_framework_simplejwt.token_blacklist في قائمة INSTALLED_APPS في ملف settings.py.، كالتالي: # Django project settings.py # ... INSTALLED_APPS = ( # ... 'rest_framework_simplejwt.token_blacklist', # ... ) ثم تشغيل الأمر التالي لتعديل قاعدة البيانات: python manage.py migrate عندما يتم اكتشاف تطبيق token_blacklist في قائمة التطبيقات المثبتة INSTALLED_APPS ، فسيضيف Simple JWT أي رموز refresh token أو access token تم إنشاؤها إلى قائمة من الرموز outstanding tokens.
- 2 اجابة
-
- 1
-
يمكنك كتابة طريقة العرض الخاصة بك للـ API إذا كنت تريد تخصيصه، ولا تحتاج إلى استخدام العرض الموجود مسبقًا from rest_framework_simplejwt.tokens import RefreshToken def get_tokens_for_user(user): refresh = RefreshToken.for_user(user) return { 'refresh': str(refresh), 'access': str(refresh.access_token), } ستعيد الدالة get_tokens_for_user أعلاه serialized لرمز refresh token وaccess token للمستخدم المحدد (المدخل إلى الدالة). بشكل عام، يمكن إنشاء token لأي فئة فرعية subclass من rest_framework_simplejwt.tokens.Token بهذه الطريقة.
- 2 اجابة
-
- 2
-
يمكنك أن تستخدم الخاصية contains على النحو التالي: User.objects.filter(datetime_registred__contains=datetime.date(2021,9,12)) أو يمكنك تحديد السنة والشهر واليوم يدويًا، وبالتالي سيتم تحديد كل المستخدمين الذين سجلوا في الموقع في هذا اليوم فقط بغض النظر عن وقت التسجيل: User.objects.filter(datetime_published__year='2021', datetime_published__month='09', datetime_published__day='12') وإن كنت تستخدم الإصدار 1.9 أو احدث من جانغو Django فيمكنك أن تستخدم الخاصية date، كالتالي: User.objects.filter(datetime_registred__date=datetime.date(2021, 9, 12))
- 4 اجابة
-
- 2
-
يوفر جانغو Django طريقة للحصول على أسماء الحقول وقيمها أيضًا من خلال التابع get_fields والذي يقوم بإرجاع tuple من أسماء الحقول، ويمكنك إستخدامه كالتالي: from django.contrib.auth.models import User fields = User._meta.get_fields() for field in fields: print(field.name) وإن كنت تريد المرور على كل الكائنات في نموذج معين فيمكنك أن تستخدم serializers، على النحو التالي: from django.core import serializers users = serializers.serialize("python", User.objects.all()) ثم في القالب: {% for user in users %} {% for field, value in user.fields.items %} {{ field }}: {{ value }} {% endfor %} {% endfor %} وإن أردت عرض حقول معينة، فيمكنك إضافة الخاصية fields، كالتالي: from django.core import serializers users = serializers.serialize("python", User.objects.all(), fields=('name','email'))
- 4 اجابة
-
- 2
-
لديك بعض الأخطاء في الكود، ويجب إصلاح هذه الأخطاء حتى يعمل الكود بشكل سليم. لاحظ أن لديك خطأ في دالة getElementsByClassName، حيث أن كلمة Elements جمع (تنتهي بحرف s)، وبالتالي يحدث خطأ في هذا السطر مما يؤدي إلى توقف السكريبت، وسترى أن هناك خطأ في الـ console يخبرك بذلك. أيضًا إن كنت تحاول أن تحدد النموذج الثاني من خلال الـ class فيجب أن تستخدم الصنف lineheightExtra وليس النص الموجود داخله كالتالي: document.getElementsByClassName('lineheightExtra');
- 3 اجابة
-
- 1
-
يأتي جانغو Django مع إطار عمل "sites" اختياري. وهي عبارة عن وسيلة ربط الكائنات والوظائف بمواقع ويب معينة، ويمكن من خلاله أن تقوم بإستخراج نطاق الموقع Domain كالتالي: from django.contrib.sites.models import Site site = Site.objects.get_current() site.domain كما يوفر جانغو Django طرق أخرى لكي يتم إحضارت نطاق الموقع، مثل التابع get_host في الكائن HttpRequest والذي يقوم بإستخراج النطاق من رأس الطلب request headers، وبالتحديد من الترويسة HTTP_X_FORWARDED_HOST (يجب أن يكون USE_X_FORWARDED_HOST مفعلًا True في ملف الإعدادات settings.py) أو من خلال HTTP_HOST (على الترتيب). ملاحظة: يمكن إستخدام الترويسة HTTP_HOST بشكل مباشر من خلال الكائن request كما في الكود التالي: request.META['HTTP_HOST'] لكن لا يجب الإعتماد على هذه الطريقة لأنها تعتمد في الأساس على الطلب الذي يرسله العميل، والذي يمكنه التلاعب به بعدة طرق، وبالتالي يستطيع تغير قيمة الترويسة HTTP_HOST بأي شيء يريده. أما إن كان نطاق الموقع ثابت وتريد إستخدامه في أكثر من مكان فيمكنك أن تقوم بتخزينه في ملف settings.py وتستدعيه في أي مكان كما ترغب، على النحو التالي: # settings.py SITE_URL = 'http://example.com' ثم يمكنك إستعمال هذا المتغير كالتالي: from django.conf import settings def site(request): return {'SITE_URL': settings.SITE_URL} طريقة أخيرة يوفرها جانغو Django وهي إستخدام التابع build_absolute_uri والذي يعيد عنوان URI بالكامل (متضمنًا على نطاق الموقع): domain = request.build_absolute_uri('/')[:-1] # https://example.com
- 3 اجابة
-
- 1
-
بداية من الإصدار 2.2 من جانغو Django أصبح بإمكانك تعديل مجموعة من الكائنات دفة واحدة من خلال التابع bulk_update، كالتالي: >>> objs = [ ... Entry.objects.create(name='old name 1'), ... Entry.objects.create(name='old name 2'), ... ] >>> objs[0].name = 'new name 1' >>> objs[1].name = 'new name 2' >>> Entry.objects.bulk_update(objs, ['name']) تقوم هذه الطريقة بتحديث الحقول المحددة بكفاءة في كائنات النموذج المتوفرة، بشكل عام باستخدام استعلام واحد فقط. أما بالنسبة للإصدارات الأقدم (تعمل الطريقة مع كل إصدارات جانغو Django) فيمكنك أن تقوم بعمل التالي: Entry.objects.filter(name='old name').update(name="new name") يعيد الكود السابق عدد الكائنات التي تم تحديثها في قاعدة البيانات كرقم صحيح Integer ملاحظة: إن كان لديك كود في التابع save فلن يتم تنفيذه، حيث أن التابع save لا يتم إستدعائه من البداية.
- 2 اجابة
-
- 2
-
هل بإمكانك أن ترفق ملف Home فقط، للتأكد من خلوه من الأخطاء؟ أيضًا فد يكون هناك مشكلة في متصفح الويب الخاص بك بسبب الملفات المؤقتة، لذلك أرجو منك أن تقوم بتجربة المشروع في متصفح آخر أو حذف اللمفات المؤقتة من المتصفح.
-
يمكنك أن تقوم بالتأكد من أن الكائن يتم إنشائه وليس تحديثه في قاعدة البيانات بأكثر من طريقة: الطريقة الأولى هي إستخدام self.pk على النحو التالي: self.pk is None: الشرط السابق يتم تنفيذه فقط في حالة كان الكائن يتم إنشائه في قاعدة البيانات لأول مرة، أي أنها عملية insert وليست Update. ملاحظة يجب أن يتم إضافة السطر السابق قبل إستدعاء التابع save من الصنف الأب super، أي قبل super(...).save يوفر جانغو Django خاصية فريدة لمعرفة نوع العملية، هل هي عملية حفظ كائن جديد Create أو عملية تحديث كائن موجود مسبقًا، وذلك من خلال الخاصية _state.adding: self._state.adding is True إن تحقق الشرط فهي عملية insert وإن لم يتحقق فهي عملية تحديث Update
- 4 اجابة
-
- 1
-
هناك عدة أسباب لحدوث هذا الأمر: هل يحتوي المكون Home على محتوى ليتم عرضه؟ أيضًا يجب التأكد من حفظ كل الملفات. هل تظهر لك أخطاء في ال console في المتصفح؟ الأمر الأخير هو أنه يجب تنفيذ الأمر npm run dev بعد كل تغير في ملفات js و css.
- 14 اجابة
-
- 2
-
لاحظ أن العنصر #root غير موجود في الملف welcome.blade.php ويوجد بدلًا منه العنصر #app، لذلك يجب تغير ال id من app إلى root في الملف welcome.blade.php
- 14 اجابة
-
- 1
-
في رسالة الخطأ يظهر اسم الحزمة أو الملف الذي لم يتم العصور عليه، كما في الصورة: لاحظ أن الحزم styled-components و react-slick و slick-carousel كلها غير مثبته ويمكنك تثبيتها من خلال الأمر التالي: npm install styled-components react-slick slick-carousel أيضًا إن كان مشروع React يعمل بالفعل، وتريد ربطه بـ Laravel فيمكنك معرفة الحزم المستخدمة في مشروع React من خلال الملف package.json (الخاص بمشروع React نفسه وليس مشروع Laravel).
- 14 اجابة
-
- 1
-
لاحظ أن الخطأ يظهر can't resolve react-router-dom أي أن هذه الحزمة غير موجودة، أعتقد أنك تستخدم بعض الحزم غير المثبتة في المشروع، يمكنك تثبيت كل من حزمة react-router-dom و react-icons من خلال الأمر التالي: npm install react-router-dom react-icons --save
- 14 اجابة
-
- 2
-
منذ الإصدار 1.6 من جانغو Django يمكنك تشغيل حالة اختبار كاملة، أو اختبار فردي. سيتم اكتشاف الاختبارات تلقائيًا الموجودة في أي ملف يبدأ بكلمة test ضمن المسار الحالي Current Working Directory (CWD). لذلك إذا كنت في نفس المجلد الذي يحتوي على الملف manager.py وتريد تشغيل test_a داخل الصنف الفرعي A داخل الملف test.py ضمن التطبيقapp / الوحدة module باسم example، فيجب أن تنفذ الأمر التالي: ./manage.py test example.tests.A.test_a ويمكننا أن نضع صيغة الأمر كالتالي: ./manage.py test app_name.tests.SubClass.test_name كما يمكنك أن تستخدم الحزمة django-nose التي تتيح لك تحديد الاختبارات لتشغيلها على النحو التالي: ./manage.py test another.test:TestCase.test_method أو كما هو مذكور في التعليقات ، استخدم بناء الجملة: ./manage.py test another.test.TestCase.test_method لاحظ أن الأمر الأخير لا يحتوي على علامة نقتطين : عكس الأمر الذي يسبقه. لتثبيت حزمة django-nose يمكنك تنفيذ أحد الأمر التاليين: pip install django-nose pip install -e git://github.com/jazzband/django-nose.git#egg=django-nose ثم يجب إضافة الحزمة ضمن التطبيقات المثبته installed apps في ملف settings.py، كالتالي: INSTALLED_APPS = ( # ... 'django_nose', # ... ) وفي النهاية يجب إضافة TEST_RUNNER إلى نفس الملف لكي تتمكن الحزمة من تشغيل الإختبارات: TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
- 2 اجابة
-
- 2
-
يمكنك أن تقوم بذلك من خلال إستخدام التابع group في الكائن console بدلًا من التابع log، كالتالي: console.group('Group 1'); console.log('Message One'); console.log('Message Two'); // Nested Groups console.group('Child Group'); console.log('Message One'); console.log('Message Two'); console.group('Grand Child Group'); console.log('Message One'); console.log('Message Two'); console.groupEnd(); console.groupEnd(); console.groupEnd(); لاحظ أن المجموعة group يجب أن يتم إغلاقها من خلال التابع groupEnd (بحرف E كبير). أيضًا يمكنك أن تقوم بطباعة هذه المجموعات مغلقة بشكل إفتراضي collapsed من خلال إستخدام التابع groupCollapsed بدلًا من التابع group، كالتالي: console.groupCollapsed('Group 1'); console.log('Message One'); console.log('Message Two'); // Nested Groups console.groupCollapsed('Child Group'); console.log('Message One'); console.log('Message Two'); console.groupCollapsed('Grand Child Group'); console.log('Message One'); console.log('Message Two'); console.groupEnd(); console.groupEnd(); console.groupEnd(); ستلاحظ أن المجموعات تظهر بشكل إفتراضي، وأنها تغلق من خلال التابع groupEnd أيضًا.
- 1 جواب
-
- 4
-
يحدث هذا الأمر لأنك لا ترسل رمز CSRF Token مع الطلب، وبالتالي لا يتعرف جانغو Django على مُرسل الطلب، وهذا الأمر لحماية الموقع من بعض الهجمات الإحتيالية التي قد تؤدي إلى إرسال طلبات عشوائية من مواقع مختلفة على أساس أنها مستخدمين، أو حتى سرقة بيانات المستخدمين وكلمات المرور والبطاقات البنكية .. إلخ. ولحل المشكلة كل ما عليك فعله هو إرسال رمز CSRF من خلال الخاصية csrfmiddlewaretoken في بيانات الطلب data، على النحو التالي: $.ajax({ data: { somedata: 'somedata', csrfmiddlewaretoken: '{{ csrf_token }}' }, إن لم يكن كود JavaScript يتم توليد في ملف عرض view (أي إن كنت تستخدم CDN أو حتى تخزن ملفات JS منفصلة)، فيمكنك أن تقوم بإضافة رمز CSRF إلى الصفحة في شكل حقل مخفي أو حتى كود JavaScript منفصل، ومن خلال JavaScript يتم إحضار هذا الرمز وإدراجه في الطلب، كالتالي: <!-- حقل إدخال مخفي --> <input type='hidden' name='csrfmiddlewaretoken' value='{{ csrf_token }}' /> <!-- أو من خلال كود جافاسكريبت منفصل --> <script type="text/javascript"> window.CSRF_TOKEN = "{{ csrf_token }}"; </script> بعد ذلك من خلال جافاسكريبت تستطيع إحضار هذه القيمة وإستخدامها في الطلب.
- 2 اجابة
-
- 1
-
بالتأكيد يمكنك أن تستخدم أي إطار عمل لواجهة المستخدم frontend مثل react.js أو vue.js أو غيرها مع Laravel بدون مشكلة. بشكل إفتراضي يأتي Laravel مجهز بإطار Vue.js (مع دعم لـ React.js) أيضًا، وستلاحظ ذلك من خلال الملف بصيغة .vue في مجلد resources/js/components، (إن لم يكن لديك هذا المجلد فلا توجد مشكلة) ويمكنك تغير هذا الأمر من خلال تنفيذ الأمر التالي: composer require laravel/ui php artisan ui react --auth بمجرد تنفيذ الأمر السابق ستلاحظ أن الملفات الموجودة في المجلد resources/js/components تم إستبدالها بمكونات React بدلًا من مكونات vue. أيضًا سوف تحتاج إلى تثبيت مكتبات وحزم عبر npm، على النحو التالي: npm install ستجد أن مجلد جديد ظهر باسم node_modules وهذا المجلد يحتوي على كل المكتبات والحزم الضرورية لعمل المشروع (Frontend فقط). من أجل تقديم أي عنصر إلى Browser DOM ، نحتاج إلى حاوية أو عنصر DOM جذر. في هذه الحالة يجب تعديل الملف resources\views\welcome.blade.php ليحتزي في جسم الصفحة على الكود التالي: <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel</title> <link rel="stylesheet" href="css/app.css"> </head> <body> <!-- سيتم عرض تطبيق react.js هنا --> <div id="example"></div> <script src="js/app.js"></script> </body> </html> أخيرًا يجب توليد ملف js/app.js الذي تم تضمينه في الكود السابق وذلك عبر الأمر التالي: npm run dev ملاحظة: إن كانت هذه المرة الأولى التي تقوم بتنفيذ الأمر السابق، قد تحتاج إلى تنفيذه مرتين بدلًا من مرة واحدة. الآن تستطيع تشغيل المشروع وستجد أن النتيجة كما في الصورة: هنا تم عرض مكون React بنجاح. إن كان لديك مشروع يعمل بالفعل، فكل ما عليك فعله هو إضافة ملف المشروع النهائي (ملف javascript) مكان الملف js/app.j،s ، ونفس الأمر بالنسبة إلى CSS، أو يمكنك دمج المشروع بالكامل من خلال إضافة المكونات إلى المجلد resources/js/components وإستخدام الملف resources\js\app.js كـ Entry point
- 14 اجابة
-
- 4
-
يمكنك إعادة رد بكود 403 في جانغو من خلال الكود التالي: from django.core.exceptions import PermissionDenied def my_view(request, ...): if not request.user.is_admin: raise PermissionDenied بالطبع يمكنك تغير الشرط في الكود السابق كما تريد. على عكس الخطأ HttpResponseForbidden، يؤدي إعادة PermissionDenied إلى عرض رسالة الخطأ باستخدام القالب 403.html ، أو يمكنك استخدام middleware لإظهار ملف عرض مخصصة. كما يمكنك عرض رسالة خطأ مخصصة، على النحو التالي: from django.core.exceptions import PermissionDenied def my_view(request, ...): if not request.user.is_admin: raise PermissionDenied("You do not have permission to visit this page")
- 3 اجابة
-
- 3
-
يمكنك الحصول عنوان URL مباشرة في القالب template، ولا داعي لكتابة أي filter لعمل ذلك. <a href="{% url 'admin:index' %}">Admin Index</a> كما يمكنك تمرير عض المعاملات كالتالي: <a href="{% url 'admin:posts_comment_add' comment.id %}">Add comment</a> أيضًا يمكنك أن تستعمل الدالة reverse ولكن بشكل آخر عن الإصدارات القديمة، على النحو التالي: from django.urls import reverse c = Comment.objects.get(...) change_url = reverse('admin:posts_comment_change', args=(c.id,)) كما يمكنك عمل تابع في النموذج مباشرة لكي ييقوم بإعادة عنوان URL الخاص بالنموذج في لوحة التحكم: from django.urls import reverse def get_admin_url(self): return reverse(f'admin:{self._meta.app_label}_{self._meta.model_name}_change', args=[self.id])
- 3 اجابة
-
- 3
-
لا يجب أن تستخدم Middleware لشيء سوف يتم تشغيله لمرة واحدة. فيمكنك أن تستخدم خطاف hook للقيام بهذا الأمر. للقيام بهذا الأمر في جانغو Django الإصدار 1.7 أو أحدث: أولًا في الملف myapp/apps.py، استخدم الكود التالي: from django.apps import AppConfig class MyAppConfig(AppConfig): name = 'myapp' verbose_name = "My Application" def ready(self): pass # اكتب هنا الكود الذي تريد تنفيذه عند تشغيل الخادم ثانيًا في الملف myapp/__init__.py يجب أن تخبر جانغو Django بأن ينفذ هذا الكود: default_app_config = 'myapp.apps.MyAppConfig' # MyAppConfig يحب أن تكون بنفس اسم الدالة السابقة أما إن كنت تستخدم جانغو Django الإصدار أققل من 1.7، فيمكنك أت تتبع الخطوات التالية: ضع الكود الخاص بك في أي ملف init.py خاص بالتطيقات المثبته INSTALLED_APPS، على سبيل المثال الملف myapp/__ init__.py def startup(): pass # اكتب هنا الكود الذي تريد تنفيذه عند تشغيل الخادم startup() عند تشغيل الخادم من خلال الأمر التالي: ./manage.py runserver يتم تنفيذ هذا الكود مرتين، ولكن هذا لأن runserver يقوم بلتحقق من صحة النماذج أولاً ولحل هذه المشكلة يمكنك تمرير العلم flag الذي --noreload، كالتالي: python manage.py runserver --noreload بهذه الطريقة سوف يتم تنفيذ الكود مرة واحدة فقط.
- 3 اجابة
-
- 1
-
في جانغو Django لا يتم التصفية بإستخدام علامة أقل من > أو أكبر من <، ولكن تستخدم اسم الحقل مع lte أو gte، كالتالي: أقل من أو يساوي: users = User.objects.filter(profile__level__lte=0) أكبر من أو يساوي: users = User.objects.filter(profile__level__gte=0) وإذا لم تريد أن تحصل على الكائنات التي تساوي هذه القيمة، أي أنك تريد أن تستخدم أقل من (وليس أقل من أو يساوي)، فكل ما عليك فعله هو حذف حرف e في نهاية اسم الخاصية، ليكون الكود كالتالي: أقل من: users = User.objects.filter(profile__level__lt=0) أكبر من: users = User.objects.filter(profile__level__lg=0)
- 2 اجابة
-
- 2
-
أعتقد أن هناك أمر آخر على الأقل تقوم بكتابته بعد هذا الأمر sudo su، لأن هذا الأمر يعني استخدام المستخدم المسئول root لتنفيذ الأوامر، وفي الونيدوز يمكنك أن تقوم بذلك من خلال تشغيل موجهة الأوامر كمسئول administrator، ويمكنك أن تقوم بذلك من خلال البحث عن CMD في قائمة أبدء Start ثم الضغط على البرنامج بزر الفأرة الأيمن وإختيار Run as Administrator، وذلك سوف يعمل معك موجه الأوامر كمسئول. الطريقة السابقة مساوية لكتابة sudo su في نظام لينكس. وبعد أن تقوم ها يمكنك أن تقوم بإكمال الشرح وباقي الأوامر.
- 1 جواب
-
- 1
-
دورة تطوير تطبيقات الجوال بتقنيات الويب ليست مخصصة لتعلم التصميم، لكن بالرغم من ذلك يتم إنشاء التطبيقات فيها من الصفر بما في ذلك مرحلة تجهيز بنية المشروع وتخيل النتيجة النهائية. أيضًا يمكنك أن تعين مستقل من أحد مواقع العمل الحر لتصميم واجهة التطبيق وتقوم بتطوير وبرمجة التطبيق بنفسك بعد الحصول على التصميم. وبما أن لديك معرفة مسبقة في أساسيات البرمجة فيمكنك أن تتخطى دورة علوم الحاسوب وتلتحق بأس دورة من دورات الأكاديمية بدون مشكلة. أنصحك بدور تطوير تطبيقات الجوال بتقنيات الويب لأنها متخصصة أكثر وتحتوي على عدد أكبر من التطبيقات التي سوف تقوم بإنشائها خلال الدورة، بينما دورة التطوير بإستخدام لغة JavaScript تحتوي على مواضيع أكثر مثل تطوير المواقع وتطبيقات سطح المكتب، لذا هي دورة عامة أكثر. أيضًا في حالة قمت بالإشتراك في أحد الدورات ووجدت أنها غير مناسبة وتريد تبديلها بدورة أخرى، فيمكنك التواصل مع الدعم الفني ليقوم بتبديل الدورة لك.
- 3 اجابة
-
- 1