How do I preload imports into Django's manage.py shell command?

寵の児 提交于 2019-12-05 00:50:22

For the first question, look at the manage.py shell_plus command provided by the django-extensions project. It will load all your model files on shell startup. The project has got a whole load of other useful tricks too, so it's definitely worth checking out.

For the second question, I can only guess that you need to install readline.

you can replicate what

python manage.py shell

does by just doing:

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

and you will have the environment all set up for the rest of that script. There are some other ways to do this here too: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/

One single thing which can solve both of your problem is ipython. ipython stores the previous executions and it can give you completion as well.

Auto importing frequently used packages in python manage.py shell_plus

Example:

#  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>']

Reference:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst

Adding extra stuff to the django shell can be done using as a starting point the shell_plus command provided in the django-extesions app, and modifying it by adding whatever you want to make available to the 'imported_objects' dictionary.

Eg if you duplicate the shell_plus.py file and add these two lines at the end:

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

When you run the shell using the new file the 'alist' reference will be available. I put a longer example here: http://www.michelepasin.org/techblog/?p=1012

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!