men*_*nov 10 python django django-1.7
我正在尝试按照https://docs.djangoproject.com/en/dev/ref/applications/上的文档为我的一个名为"文章"的Django应用程序设置一个自定义应用程序配置,但是我ImportError: No module named articles.apps在执行时仍然会收到./manage.py check(或任何其他管理命令,如./manage.py runserver)
这是该项目的一棵树
projectname
??? apps
? ??? articles
? ? ??? admin.py
? ? ??? apps.py
? ? ??? __init__.py
? ? ??? migrations
? ? ? ??? 0001_initial.py
? ? ? ??? __init__.py
? ? ??? models.py
? ? ??? templates
? ? ? ??? articles
? ? ??? templatetags
? ? ? ??? articles_tags.py
? ? ? ??? __init__.py
? ? ??? tests.py
? ? ??? urls.py
? ? ??? views.py
? ??? __init__.py
Run Code Online (Sandbox Code Playgroud)
在settings.py中安装了app :
INSTALLED_APPS = (
'grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'grappelli.dashboard',
'mptt',
'sekizai',
'pytils',
'sorl.thumbnail',
'sefaro.apps.utils',
'sefaro.apps.seo',
'sefaro.apps.staticpages',
'sefaro.apps.statictext',
'sefaro.apps.usersettings',
'sefaro.apps.navigation',
'sefaro.apps.slideshow',
'sefaro.apps.articles',
)
Run Code Online (Sandbox Code Playgroud)
内容articles/__init__.py:
# articles/__init__.py
default_app_config = 'articles.apps.ArticlesConfig'
Run Code Online (Sandbox Code Playgroud)
内容articles/apps.py:
# -*- coding: utf-8 -*-
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class ArticlesConfig(AppConfig):
name = 'articles'
verbose_name = _(u'Articles')
Run Code Online (Sandbox Code Playgroud)
我有'projectname.apps.articles'我的INSTALLED_APPS
只是为了确保我真的拥有所有这些文件并且没有弄乱路径
>>> from projectname.apps.articles.apps import ArticlesConfig
>>> ArticlesConfig
<class 'projectname.apps.articles.apps.ArticlesConfig'>
Run Code Online (Sandbox Code Playgroud)
一切进口都很好......
但:
(vagrant)vagrant@vagrant-ubuntu-trusty-32:~/django$ ./manage.py check
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/vagrant/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/home/vagrant/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
django.setup()
File "/home/vagrant/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/vagrant/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/home/vagrant/local/lib/python2.7/site-packages/django/apps/config.py", line 112, in create
mod = import_module(mod_path)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named articles.apps
Run Code Online (Sandbox Code Playgroud)
men*_*nov 16
根据特定的Django项目结构(所有应用程序都位于projectname/apps/模块中),应使用包括项目名称的完整路径.
正如文档https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.name所说:
AppConfig.name
应用程序的完整Python路径,例如'django.contrib.admin'.
所以它应该是:
# articles/apps.py:
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class ArticlesConfig(AppConfig):
name = 'projectname.apps.articles'
verbose_name = _(u'Articles')
Run Code Online (Sandbox Code Playgroud)
和
# articles/__init__.py
default_app_config = 'projectname.apps.articles.apps.ArticlesConfig'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19896 次 |
| 最近记录: |