13

当我在我的 Django 项目上运行 manage.py shell 以查看某些内容时,我总是想在 shell 的开头运行一些常见的导入(例如,我总是想导入我的模型文件。)我怎样才能拥有这些每次我运行shell命令时自动运行?

第二个相关问题,当我点击向上箭头时,我得到了“^A”字符,而不是之前在 manage.py shell(以及我的常规 python shell)中运行的命令,我该如何解决这个问题,以便它加载上一个命令就像在 Linux/Unix 命令行上一样?

4

5 回答 5

11

第一个问题,看django-extensions项目manage.py shell_plus提供的命令。它将在 shell 启动时加载所有模型文件。该项目还有很多其他有用的技巧,所以绝对值得一试。

对于第二个问题,我只能猜测您需要安装readline.

于 2009-12-02T23:03:46.197 回答
4

你可以复制什么

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/

于 2011-06-16T06:41:13.090 回答
2

可以解决这两个问题的一件事是ipython。ipython 存储以前的执行,它也可以给你完成。

于 2009-12-03T16:03:58.197 回答
2

自动导入常用包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-extensions/django-extensions/blob/master/docs/shell_plus.rst

于 2015-08-24T07:30:35.877 回答
0

可以使用django-extesions应用程序中提供的 shell_plus 命令作为起点,向 django shell 添加额外的东西,并通过添加任何您想要提供给“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

于 2010-11-17T19:37:22.947 回答