ImportError:无法导入名称a_class

时间:2015-04-09 00:32:56

标签: django ipython pythonanywhere

我有一个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

1 个答案:

答案 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,您需要安装和迁移应用程序。