When I run manage.py shell on my Django project to take a peek at something there are common imports that I always want to run at the start of the shell (e.g. I always want to import my model files.) How can I have these run automatically everytime I run the shell command?
2nd related question, when I hit the up arrow I get the "^A" character instead of the previously run command in the manage.py shell (and in my regular python shell), how can I fix this so it loads the previous command like on the Linux/Unix command line?
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:
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
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
.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.
you can replicate what
does by just doing:
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/
Auto importing frequently used packages in
python manage.py shell_plus
Example:
Reference:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst