3

我之前问过这个,但我仍然卡住了。该脚本最终将作为 cron 作业运行。
上一个问题:将 CSV 导入 Django 和无法识别的设置

我跳过了导入 csvs 的实际代码,因为这不是问题。

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 部分仍然出错。除了对其他人来说非常明显的东西之外,我还缺少什么?

4

3 回答 3

4
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings'
import django
django.setup()

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

from my_app.models import MyModel
all_objects = MyModel.objects.all()
于 2014-05-08T06:59:58.987 回答
1

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

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

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

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

如果你的结构是

/myproject 
    /app 
    /myproject

将此保存为模块中的定义函数(即csvimportdoofer.py)。让我们调用函数'foobar'。

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

python manage.py shell

from app.csvimportdoofer import foobar

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

老实说 - 需要这个app.csvimportdoofer部分真的让我很长时间了,但主要是因为在来到 Django 之前我没有在 python 中使用我自己的模块。在你能走路之前跑...

于 2014-02-17T11:21:02.963 回答
0
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
于 2014-01-21T03:47:47.103 回答