我有一个django网站,托管在pythonanywhere.com上。在该网站上,我可以创建一个Bash控制台或一个iPython控制台。
我希望能够做到这一点:
from my_module import a_class
a_class.object.all()
a_class.object.filter(some_attribute=True)
如果我尝试在iPython conosle中运行它,我会收到错误:ImportError: cannot import name a_class
解释可能很简单,我还在学习......我找到的答案是关于第三方模块,但这是我创建的,我不知道为什么它可以&#39 ;是进口的。如果我没有from...import
,我会收到a_class
未按预期定义的错误。
修改
这是我的settings.py文件:
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accueil',
'a_class',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'my_site.urls'
WSGI_APPLICATION = 'my_site.wsgi.application'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
我的目录结构是:
── a_class
│ ├── __init__.py
│ ├── admin.py
│ ├── forms.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0016_auto_20150407_0057.py
│ │ ├── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── a_class
│ │ ├── home.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── my_site
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
答案 0 :(得分:0)
类通常在模型中,有几种方法可以导入它们,首先是:
from django.apps import apps
MyModel = apps.get_model('app_label', 'ModelName') # Both strings
如果它存储在models.py中,那么你也应该
from myapp.models import Class # Make sure the app has an __init__.py to be seen
另外,要使用./manage shell,您需要安装和迁移应用程序。