كيف يمكنني تحميل الواردات في أمر Shell Manory.py في Django؟

StackOverflow https://stackoverflow.com/questions/1836361

  •  11-09-2019
  •  | 
  •  

سؤال

عندما أقوم بتشغيل Shower.py Shell على مشروع Django الخاص بي لإلقاء نظرة خاطفة على شيء ما هناك واردات مشتركة أريد دائما تشغيلها في بداية الشل (على سبيل المثال، أريد دائما استيراد ملفات نموذجي.) كيف يمكنني الحصول على هذه تشغيل تلقائيا في كل مرة أقوم بتشغيل الأمر shell؟

2nd السؤال المتعلق، عندما تضغط على السهم لأعلى أحصل على حرف "^ a" بدلا من الأمر الذي تم تشغيله مسبقا في Shell Manage.py (وفي قذيفة بيثون العادية)، كيف يمكنني إصلاح هذا حتى يتم تحميل الأمر السابق مثل في سطر أوامر Linux / UNIX؟

هل كانت مفيدة؟

المحلول

للسؤال الأول، انظر إلى manage.py shell_plus الأمر المقدم من django-extensions. المشروع. سوف يقوم بتحميل جميع الملفات النموذجية الخاصة بك على بدء تشغيل SHELT. حصل المشروع على حمولة كاملة من الحيل المفيدة الأخرى أيضا، لذلك من المؤكد أنه يستحق التدقيق.

للسؤال الثاني، لا أستطيع إلا أن أخمن أنك بحاجة إلى تثبيت readline.

نصائح أخرى

يمكنك تكرار ما

python manage.py shell

يفعل فقط القيام به:

from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)

وسوف يكون لديك البيئة التي تم إعدادها جميعا لبقية هذا البرنامج النصي. هناك بعض الطرق الأخرى للقيام بذلك هنا أيضا: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

شيء واحد يمكن أن يحل كل من مشكلتك هو ipython.. وبعد يخزن iPython الإعدام السابق ويمكن أن يوفر لك الانتهاء أيضا.

استيراد السيارات في كثير من الأحيان حزم المستخدم في python manage.py shell_plus

مثال:

#  local_settings
SHELL_PLUS_PRE_IMPORTS = (
    ('<app_name>.models', '*'),
    ('<app_name>.forms', '*'),
    ('<app_name>.views', '*'),
    ('django.core.urlresolvers', '*'),
    ('django.db', 'connection'),
    ('django.db', 'reset_queries'),
)

SHELL_PLUS_DONT_LOAD = ['<app_name>', '<app_name>']

مرجع:
https://github.com/django-etherensions/django-etherensions/blob/master/docs/shell_plus.rst.

إضافة أشياء إضافية إلى شل django يمكن القيام بها باستخدام كنقطة انطلاق الأمر shell_plus المقدم في django-expecion. التطبيق، وتعديله عن طريق إضافة ما تريد إتاحة القاموس "Imported_Objects".

على سبيل المثال إذا قمت بتسريع ملف Shell_plus.py وإضافة هذين السطرين في النهاية:

# .......
alist = range(1000)
imported_objects['alist'] = alist
code.interact(local=imported_objects)  # <-- this is the original final line

عند تشغيل Shell باستخدام الملف الجديد، ستكون مرجع "alist" متاحا. وضعت مثالا أطول هنا: http://www.michelepasin.org/techblog/؟p=1012.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top