Python 将django模型导入另一个应用程序
我的django网站功能非常强大,它与数据库和web客户机通信。我的文件夹设置如下:Python 将django模型导入另一个应用程序,python,django,database,Python,Django,Database,我的django网站功能非常强大,它与数据库和web客户机通信。我的文件夹设置如下: top +--- django +---my_framework +--- models.py +--- settings.py +---lib +--- scripts +---scripts_that_do_stuff_from_console +--- service_that_needs_access_to_models li
top
+--- django
+---my_framework
+--- models.py
+--- settings.py
+---lib
+--- scripts
+---scripts_that_do_stuff_from_console
+--- service_that_needs_access_to_models
lib_path = os.path.abspath(os.path.join(os.path.join('..', 'django'),"lib"))
sys.path.append(lib_path)
我可以通过脚本文件夹中的不同脚本访问lib文件夹中的库,如下所示:
top
+--- django
+---my_framework
+--- models.py
+--- settings.py
+---lib
+--- scripts
+---scripts_that_do_stuff_from_console
+--- service_that_needs_access_to_models
lib_path = os.path.abspath(os.path.join(os.path.join('..', 'django'),"lib"))
sys.path.append(lib_path)
这看起来不太雅致,但很管用
我需要另一个在后台运行的应用程序,它与数据库对话,支持django框架并与控制台交互。
我想访问my models.py中的一些模型,因此我尝试了以下方法:
lib_path = os.path.abspath(os.path.join(os.path.join('..', 'django'),"lib"))
sys.path.append(lib_path)
from models import SystemConfiguration
我得到这个错误:
Traceback (most recent call last):
File "./imageHandler.py", line 14, in <module>
from models import SystemConfiguration
File "/home/jordan/django/my_framework/models.py", line 2, in <module>
from django.contrib.auth.hashers import make_password
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py", line 7, in <module>
from django.middleware.csrf import rotate_token
File "/usr/local/lib/python2.7/dist-packages/django/middleware/csrf.py", line 14, in <module>
from django.utils.cache import patch_vary_headers
File "/usr/local/lib/python2.7/dist-packages/django/utils/cache.py", line 26, in <module>
from django.core.cache import caches
File "/usr/local/lib/python2.7/dist-packages/django/core/cache/__init__.py", line 34, in <module>
if DEFAULT_CACHE_ALIAS not in settings.CACHES:
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
django.core.exceptions.ImproperlyConfigured: Unable to detect the app label for model "MyClass." Ensure that its module, "models", is located inside an installed app.
这没什么帮助。我在这方面已经研究了一段时间,但没有取得任何进展。欢迎提出任何建议
去更好的地方。。。。我补充了这一点(正如塞姆普里尼所建议的): 现在我得到了这个错误:
Traceback (most recent call last):
File "./imageHandler.py", line 14, in <module>
from models import SystemConfiguration
File "/home/jordan/django/my_framework/models.py", line 2, in <module>
from django.contrib.auth.hashers import make_password
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py", line 7, in <module>
from django.middleware.csrf import rotate_token
File "/usr/local/lib/python2.7/dist-packages/django/middleware/csrf.py", line 14, in <module>
from django.utils.cache import patch_vary_headers
File "/usr/local/lib/python2.7/dist-packages/django/utils/cache.py", line 26, in <module>
from django.core.cache import caches
File "/usr/local/lib/python2.7/dist-packages/django/core/cache/__init__.py", line 34, in <module>
if DEFAULT_CACHE_ALIAS not in settings.CACHES:
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
django.core.exceptions.ImproperlyConfigured: Unable to detect the app label for model "MyClass." Ensure that its module, "models", is located inside an installed app.
MyClass位于models.py文件中,因此它现在正在正确打开它,但还有其他错误…需要在开始时将设置模块添加到os.environ dict(可能在导入任何模型之前,但在执行sys.path.append之后) os.environ['DJANGO\u SETTINGS\u MODULE']=“SETTINGS” 文件夹布局:
Wibble Project>
manage.py
wibble>
settings.py #must contain 'stuff' as an app
stuff>
models.py
test.py
示例test.py:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'wibble.settings'
from stuff.models import MyObject
print(MyObject.objects.all())
输出:
python test.py
[,]
找个更好的地方。。。。我添加了以下内容:>`lib_path=os.path.abspath(“/mnt/garageMonitor/django/lib”)sys.path.append(lib_path)lib_path=os.path.abspath(“/mnt/garageMonitor/django/garageMonitor”)sys.path.append(lib_path)os.environo['django_设置_MODULE']='settings'from models import SystemConfiguration>现在我收到以下错误:django.core.exceptions.impropertlyconfigured:无法检测模型“MyClass”的应用程序标签。请确保其模块“models”位于已安装的应用程序中。MyClass位于models.py文件中