【问题标题】:Django settings for standalone独立的 Django 设置
【发布时间】:2013-08-13 14:15:26
【问题描述】:

我之前问过这个,但我仍然卡住了。此脚本最终将作为 cron 作业运行。
上一个问题:Importing CSV to Django and settings not recognised

我已经跳过了导入 csv 的实际代码,因为这不是问题所在。

import urllib2
import csv
import requests
from django.core.management import setup_environ
from django.db import models
from gmbl import settings

settings.configure(
    DEBUG = True,
    DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '/Users/c/Dropbox/Django/mysite/mysite/db.db',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

)



#
from sys import path

sys.path.append("/Users/chris/Dropbox/Django/mysite/gmbl")

from django.conf import settings

这给了我回溯:django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. logout

所以我尝试切换它,并将 settings.configure... 等放在 from django.db import models 行之前,但它只是说 "settings not defined"

我试过添加

from django.core.management import setup_environ
from django.db import models
from yoursite import settings

setup_environ(settings)

答案中建议的代码,但在 from django.db import models 部分仍然出错。除了对其他人来说非常明显的东西之外,我还缺少什么?

【问题讨论】:

  • 那会是什么样子呢?将 can_import_settings 设置为 True,如果不能让它抛出错误?我不太确定你的建议是什么,抱歉。
  • @ChrisCampbell 呃,什么? dm03514 建议您使用他链接到的指令来编写自定义的 manage.py 命令。这样,您无需显式配置设置。
  • 哦,把独立代码写成自定义命令?我以为他的意思是用它来对设置问题进行排序。我会在今天晚些时候试一试。

标签: python django django-models


【解决方案1】:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings'
import django
django.setup()

然后你就可以使用你的模型了。

from my_app.models import MyModel
all_objects = MyModel.objects.all()

【讨论】:

    【解决方案2】:

    今天有人对这个问题投了赞成票,这很好,我想我会事后诸葛亮,因为上面的答案对我没有帮助。这主要是因为我无法充分解释我想要做什么。感谢那些试图帮助我的人。

    对于其他新手来说,有两个问题。

    第一个是 - 我试图在第一个实例中从命令行运行它(问题中没有说明,所以部分是我的错。)我想在构建时从 CLI 运行它来测试它。最终,我将它作为一个管理页面写入了 views.py`,这样我就可以在需要时触发它。

    事实上,答案是“确保你的文件在 Python 路径上/在你的 Django 应用程序中”步骤是:

    如果你的结构是

    /myproject 
        /app 
        /myproject
    

    将其保存为模块中的a defined function(即csvimportdoofer.py)。让我们调用函数'foobar'。

    cd 进入你的 Django 项目文件夹(顶层 /myproject,manage.py 所在的位置)

    python manage.py shell

    from app.csvimportdoofer import foobar

    现在我可以在命令行中随时调用foobar()

    老实说 - 需要 app.csvimportdoofer 部分真的让我很长时间了,但主要是因为 I hadn't worked with my own modules in python before coming to Django。先跑再走……

    【讨论】:

      【解决方案3】:
      import os
      os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
      

      【讨论】:

        猜你喜欢
        • 2020-09-06
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        • 2016-03-13
        • 2015-02-10
        • 1970-01-01
        • 2013-11-17
        • 2023-03-17
        相关资源
        最近更新 更多