【问题标题】:DJANGO_SETTINGS_MODULE not importing my model classesDJANGO_SETTINGS_MODULE 没有导入我的模型类
【发布时间】:2011-10-27 14:15:42
【问题描述】:

我从各种帖子中了解到,您可以使用 DJANGO_SETTINGS_MODULE = APPNAME.settings 导入模型类,以便在 linux 命令行上使用 python 脚本运行。我试着跑了:

DJANGO_SETTINGS_MODULE=dishtank.settings PYTHONPATH=$HOME/pythonDirLocation python pythonScript.py

在我的 python 脚本中,我需要从我的一个应用程序中的 model.py 文件中导入一些类,以便我可以在我的数据库中编辑表。导入我的所有 django 设置以与我的脚本一起运行,我有什么遗漏吗?

【问题讨论】:

    标签: python django


    【解决方案1】:

    setup_environ 的解决方案是deprecated since version 1.4,因此一个新的解决方案是遵循official doc 的指导方针。

    本质上,需要对代码进行如下适配:

    #!/usr/bin/python
    # Deprecated way:
    # from django.core.management import setup_environ
    # import settings
    # setup_environ(settings)
    
    import sys
    import os
    
    # If you find a solution that does not need the two paths, please comment!
    sys.path.append('$path_to_root_of_project$')
    sys.path.append('$path_to_root_of_project$/$project_name$')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = '$project_name$.settings'
    from django.conf import settings
    
    # Beginning of your script...
    

    请注意,更好的解决方案可能是(如果适用)将脚本集成到 custom management command,例如 ./manage.py my_command

    【讨论】:

      【解决方案2】:

      DJANGO_SETTINGS_MODULE = APPNAME.settings 应该是 PROJECT.settings。我通常避免使用这种方法,而是更喜欢在独立脚本的顶部使用 setup_environ

      from django.core.management import setup_environ
      from yourproject import settings
      
      setup_environ(settings)
      
      from yourproject.app.models import YourModel
      

      【讨论】:

        猜你喜欢
        • 2022-12-05
        • 1970-01-01
        • 2016-01-19
        • 2022-01-06
        • 2010-09-17
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 2017-02-06
        相关资源
        最近更新 更多