【问题标题】:Automatically import models on Django shell launch在 Django shell 启动时自动导入模型
【发布时间】:2011-06-19 07:07:23
【问题描述】:

我厌倦了每次打开 Django shell 时都输入from account_import.models import ImportFile。有没有办法在我启动 shell 时自动运行这个命令?

【问题讨论】:

    标签: python django


    【解决方案1】:

    安装 django-extensions,它的功能之一 (shell_plus) 是为您的模型提供上下文。 https://github.com/django-extensions/django-extensions

    因此,您可以使用./manage.py shell_plus 代替./manage.py shell,以便导入所有内容。

    【讨论】:

    • 嗯。我安装了 django-extensions,但是当我尝试做 ./manage.py shell_plus 时它说 Unknown command: 'shell_plus'
    • 别忘了将 'django_extensions' 添加到您的 INSTALLED_APPS 中
    • 你知道这样的SHELL,它可以实时跟踪数据库发生的所有更新而无需重新启动?
    • 没错,在 INSTALLED_APPS 中添加 'django_extensions',不是 'django-extensions' -- 下划线,不是连字符。
    【解决方案2】:

    http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP

    如果您将环境变量PYTHONSTARTUP 设置为一个文件,那么每当您启动python shell 时,它将首先运行。

    【讨论】:

    • 哦,好的。我不知道 django 的外壳。但是 django 绝对在我要检查的东西清单上!
    • 它加载了文件,但没有在 shell 的相同命名空间/上下文中加载它。免责声明:我是 python&django 新手
    • 这在我的情况下实际上工作得很好。我使用虚拟环境。在postactivate 脚本中,我添加了一个别名来首先导出PYTHONSTARTUP 变量,然后运行django shell。启动脚本仅在我使用此别名时执行。唯一的缺点是如果我运行这个别名,然后在同一个终端中,关闭 django shell,然后尝试打开普通的 python shell,它会再次读取启动文件。但无论如何我从不这样做。所以我可以忍受它。
    • 终于有了一个不需要安装额外组件的答案。作为记录,您需要创建一个文件 imports.py,如 from myapp.models import *。然后使用 PYTHONSTARTUP="imports.py" python3 manage.py shell 启动 shell
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2012-07-23
    相关资源
    最近更新 更多