我正在尝试用Django启动一个非常基本的web应用程序,并获得ModuleNotFoundError: No module named 'ui'。
我的django项目是frontend_project,应用程序是ui
树:
front_end
├── front-end/Pipfile
├── front-end/Pipfile.lock
├── front-end/README.md
├── front-end/db.sqlite3
├── front-end/frontend_project
│ ├── front-end/frontend_project/__init__.py
│ ├── front-end/frontend_project/
│ │ └──front-end/frontend_project/ui
│ │ ├── front-end/frontend_project/ui/__init__.py
│ │ ├── front-end/frontend_project/ui/admin.py
│ │ ├── front-end/frontend_project/ui/apps.py
│ │ ├── front-end/frontend_project/ui/migrations
│ │ │ └── front-end/frontend_project/ui/migrations/__init__.py
│ │ ├── front-end/frontend_project/ui/models.py
│ │ ├── front-end/frontend_project/ui/tests.py
│ │ ├── front-end/frontend_project/ui/urls.py
│ │ └── front-end/frontend_project/ui/views.py
│ ├── front-end/frontend_project/settings.py
│ ├── front-end/frontend_project/urls.py
│ └── front-end/frontend_project/wsgi.py
└── front-end/manage.pyInstalled_apps:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'ui.apps.UiConfig',
]我的frontend_project urls.py看起来像:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('ui.urls')),
]ui urls.py
from django.urls import path
from .views import homePageView
urlpatterns = [
path('', homePageView, name='home'),
]编辑:我删除了应用程序目录,并将UI应用程序放在项目目录下--仍然遇到相同的错误ModuleNotFoundError: No module named 'ui'。
我只是想让一个简单的web应用程序工作,我的python版本是3.6.7和pipenv。
谢谢大家!
发布于 2018-11-17 20:12:13
您已经以非典型的方式配置了您的项目。虽然不是绝对必需的,但最简单(也是最常见的)项目结构方式是将项目应用程序包含在根目录中,根目录是包含manage.py.的目录。
在您的示例中,您的“ui”应用程序目录将位于前端/前端/。(不在/front_end/front_end/front_end/frontend_project/)下)
如果您希望保持当前的项目结构,则需要进行额外的配置更改,包括子类AppConfig (请参见下面)。
还需要使用从根urlconf到应用程序UrlConf的虚线路径(这是您错过的可能导致错误的配置步骤)。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('frontend_project.ui.urls')), <--- here
]在您的示例中,通过在'ui.apps.UiConfig'中定义到INSTALLED_APPS的直接路径,Django查找位于apps.py中的应用程序的AppConfig子类的虚线路径中的配置。
# ui/apps.py
from django.apps import AppConfig
class UiConfig(AppConfig):
name = 'ui'发布于 2018-11-17 16:11:14
我认为您需要在__init__.py上创建一个front-end/frontend_project/apps/文件
发布于 2018-11-18 18:40:10
将Ui的urls.py文件导入到frontend_project urls.py文件中。
from django.contrib import admin
from django.urls import path, include
from ui import urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('ui.urls')),
]https://stackoverflow.com/questions/53346264
复制相似问题