Django独立设置

时间:2013-08-13 14:15:26

标签: python django django-models

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

我已经跳过导入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导入模型部分仍然存在错误。我错过了什么,除了对其他人来说似乎非常明显的东西?

3 个答案:

答案 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'