Django ImportError:无法将名称导入\u类
我有一个django网站,托管在pythonanywhere.com上。在该站点上,我可以创建Bash控制台或iPython控制台 我希望能够做到这一点:Django ImportError:无法将名称导入\u类,django,ipython,pythonanywhere,Django,Ipython,Pythonanywhere,我有一个django网站,托管在pythonanywhere.com上。在该站点上,我可以创建Bash控制台或iPython控制台 我希望能够做到这一点: 从我的\u模块导入\u类 a_class.object.all() a_class.object.filter(some_属性=True) 如果我试图在iPython conosle中运行此操作,则会出现错误:ImportError:cannotimportname a_class 解释可能很简单,我还在学习。。。我找到的答案是关于第三方模
从我的\u模块导入\u类
a_class.object.all()
a_class.object.filter(some_属性=True)
如果我试图在iPython conosle中运行此操作,则会出现错误:ImportError:cannotimportname a_class
解释可能很简单,我还在学习。。。我找到的答案是关于第三方模块的,但这是我创建的,我不知道为什么它不能导入。如果我没有从…导入,我会得到一个错误,a_class
未按预期定义
编辑
这是my 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_类
│ ├── __初始值
│ ├── 管理员
│ ├── forms.py
│ ├── 迁移
│ │ ├── 0001_首字母.py
│ │ ├── 0016_auto_20150407_0057.py
│ │ ├── __初始值
│ ├── models.py
│ ├── 模板
│ │ └── a_类
│ │ ├── home.html
│ ├── tests.py
│ ├── url.py
│ └── views.py
├── manage.py
├── 我的网站
│ ├── __初始值
│ ├── 设置.py
│ ├── url.py
│ └── wsgi.py
类通常位于模型中,有几种方法可以导入它们,首先:
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,您需要安装并迁移应用程序。既然您提到了,答案可能很简单:您的模块文件夹中是否有manditory\uuuuu init\uuuuuuuuuuuy.py
文件?导入是否在非交互式shell中工作(如果是:是否使用线程模块,以及哪个模块?)?模块是否在iPython可以找到的某个地方(在app文件夹中/在PYTHONPATH的某个地方)?是的,init.py在那里。我可以从网站的其他地方导入Those类,这是否回答了第二个问题?iPython是从项目的根文件夹中启动的。与您在这里显示的文件结构相关的my_模块在哪里?我应该在我的帖子中提到我想要运行的命令,它们在PyCharm中运行良好。GilesTomas对下面答案的评论帮助我获得了所需的控制台。谢谢你的帮助!谢谢你的回答。老实说,当你说应用程序需要安装和迁移时,我不是你的意思。您的第一个解决方案给了我这个错误:AppRegistryNotReady:模型尚未加载。
,而第二个解决方案给了我一个配置不正确:请求设置缓存,但未配置设置。
错误。(是的,我的模型存储在models.py中)。希望它能澄清这个问题!在settings.py的INSTALLED_APPS下,将应用名称添加为字符串。然后在shell运行中./manage.py makemigrations&&./manage.py migrate,如果您刚刚开始,请遵循Django轮询教程。该应用程序列在INSTALLED_APPS中,我随后运行了这两个命令。请发布您的settings.py和目录结构,以确保您了解Mikeec3提到的一个特定内容——如果您想访问Django模型,您需要使用/manage.py shell
启动IPython。从PythonAnywhere“Consoles”页面启动的常规IPython控制台将不起作用,从Bash控制台运行“IPython”也不会起作用。您需要启动一个Bash控制台,cd
到Django项目的根目录,然后运行/manage.py shell
。对不起,如果你已经很清楚了,我只是觉得需要加下划线。