我已经跳过导入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
所以我尝试切换它,并在from django.db import models
行之前放置settings.configure ...等,但之后它只是说"settings not defined"
我尝试添加
from django.core.management import setup_environ
from django.db import models
from yoursite import settings
setup_environ(settings)
答案中建议使用代码,但是在django.db导入模型部分仍然存在错误。我错过了什么,除了对其他人来说似乎非常明显的东西?
答案 0 :(得分:3)
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings'
import django
django.setup()
然后你可以使用你的模型。
from my_app.models import MyModel
all_objects = MyModel.objects.all()
答案 1 :(得分:1)
今天有人对这个问题提出了异议,这很好,而且我认为我会回过头来看看事后的好处,因为上面的答案对我没有帮助。这主要是因为我无法充分解释我想要做的事情;感谢那些试图帮助我的人。
对于其他新手来说,有两个问题。
第一个是 - 我试图在第一个实例中从命令行运行它(未在问题中说明,部分是我的错。)我想从CLI运行它以在我构建时测试它。最后,我将它写入views.py`作为管理页面,所以我可以在需要时触发它。
实际上,回答是'确保你的文件在你的Django应用程序的Python路径上'如果你想要从命令行运行这些新东西,那么现在非常明显 - 步骤是:
如果您的结构是
/myproject
/app
/myproject
将其保存为模块中的a defined function(即csvimportdoofer.py
)。我们将函数称为“foobar”。
进入你的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。跑步之前你可以走路......
答案 2 :(得分:0)
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'