当我在 Django 项目上运行 manage.py shell 来查看某些内容时,我总是希望在 shell 开始时运行一些常见的导入(例如我总是想导入我的模型文件。)如何让这些文件在每次运行 shell 命令时自动运行?

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

有帮助吗?

解决方案

对于第一个问题,看由manage.py shell_plus命令href="http://github.com/django-extensions/django-extensions/tree/master/" rel="noreferrer"> django-扩展程序项目。它会加载在shell启动所有的模型文件。该项目得到了其他有用的技巧整个负载太大,所以它绝对值得一试。

对于第二个问题,我只能猜测,您需要安装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-extensions/django -Extensions /斑点/主/文档/ shell_plus.rst

可以使用以下命令中提供的 shell_plus 命令作为起点,向 django shell 添加额外的内容: Django 扩展 应用程序,并通过添加您想要提供给“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