Amer Abdallah نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 أحتاج إلى تنفيذسكريبت بلغة Python من خلال Django Shell. حاولت أن أقوم بهذا الأمر بالطريقة التالية: ./manage.py shell << clear_db.py لكنها لم تنجح. ويتوقع سطر الأوامر كتابة شيء ما. 1 اقتباس
1 سامح أشرف نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 يمكنك أن تقوم بذلك من خلال العلامة < بدلًا من << ليصبح الأمر كالتالي: ./manage.py shell < clear_db.py يمكنك أيضًا أن تقوم بتنفيذ السكريبت من خلال الدالة exec، كالتالي: $ ./manage.py shell ... >>> exec(open("./clear_db.py").read()) وإن كنت تستعمل بايثون 2.7 فيمكنك أن تستخدم الدالة execfile، كالتالي: $ ./manage.py shell ... >>> execfile('clear_db.py') إن كنت تستعمل Windows Powershell فسوف تحتاج إلى إستخدام Get-Content: Get-Content clear_db.py | .\manage.py shell على العموم لا يُنصح بفعل ذلك من shell - وهذا لأنه لا ينبغي لك تنفيذ سكريبتات عشوائية من بيئة Django (ولكن هناك طرقًا للتغلب على ذلك). إذا كان هذا السكريبت سيتم تشغيله عدة مرات، فمن الجيد إعداده كأمر مخصص، كالتالي: ./manage.py clear_db للقيام بذلك، قم بإنشاء ملف باسم clear_db.py في مجلد management، وفي هذا الملف، حدد الأمر المخصص الخاص بك (تأكد من أن اسم الملف هو اسم الأمر الذي تريد التنفيذ منه.): from django.core.management.base import BaseCommand class Command(BaseCommand): def handle(self, **options): # قم بكتابة السكريبت هنا 1 اقتباس
0 Ali Haidar Ahmad نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 إضافة إلى الطرق التي ذكرها سامح، يمكنك القيام بذلك كالتالي: import os, django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings") django.setup() # الآن يمكن أن تضع الكود هنا... وهذه الطريقة تجنبك حدوث بعض الاستثناءات مثل django.core.AppRegistryNoReady أو: import sys, os sys.path.append('/path/to/your/django/app') os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' from django.conf import settings # أضف ماتريده بعدها 1 اقتباس
السؤال
Amer Abdallah
أحتاج إلى تنفيذسكريبت بلغة Python من خلال Django Shell. حاولت أن أقوم بهذا الأمر بالطريقة التالية:
لكنها لم تنجح. ويتوقع سطر الأوامر كتابة شيء ما.
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.