Django模块-缺席视图模型

时间:2019-05-14 17:07:00

标签: python django unit-testing

我正在关注山羊测试书。我遇到了以下问题。

我正在使用python manage.py runserver运行django服务器。

但是我遇到了这个错误。

  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/andykw/cloned_projects/unit-tests/superlists/superlists/urls.py", line 19, in <module>
    from lists import views
ModuleNotFoundError: No module named 'lists'

我知道应用views.py中有list

这就是我在urls.py

中所拥有的
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from lists import views

urlpatterns = ['lists.views',
    #path('admin/', admin.site.urls),
    url(r'^$', views.home_page,name='home'),
]

任何想法都非常受欢迎。

更新

这是我的项目的树形结构

├── func_tests.py
├── geckodriver.log
├── lists
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       └── __init__.cpython-36.pyc
│   ├── models.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── tests.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── tests.py
│   └── views.py
├── README.md
├── requirements.txt
└── superlists
    ├── manage.py
    └── superlists
        ├── __init__.py
        ├── __pycache__
        │   ├── __init__.cpython-36.pyc
        │   ├── settings.cpython-36.pyc
        │   └── urls.cpython-36.pyc
        ├── settings.py
        ├── urls.py
        └── wsgi.py

2 个答案:

答案 0 :(得分:1)

尝试指定包含根应用名称的路径:

from superlists.lists import views

编辑:

发布项目结构后,您的lists Django应用似乎位于项目的根目录(./superlists)的外部 –它们处于同一级别的嵌套。

As the Django documentation specifies,当您使用manage.py startapp [app-name]创建新应用时,它会创建一个文件夹,其中包含您的lists应用的结构,但位于内部是您的第一个{{ 1}}文件夹。这意味着设计上您应该具有以下内容:

superlists

然后我给您的最初答案应该开始起作用。

答案 1 :(得分:1)

lists文件夹(应用程序)当前位于项目文件夹之外。将其移至superlists文件夹中。

└── superlists
    ├── manage.py
    ├── lists
    │   ├── admin.py
    │   ├── apps.py
    │   ├── __init__.py
    └── superlists
        ├── __init__.py
        ├── __pycache__
        │   ├── __init__.cpython-36.pyc
        │   ├── settings.cpython-36.pyc
        │   └── urls.cpython-36.pyc
        ├── settings.py
        ├── urls.py
        └── wsgi.py

func_tests.py的位置也很奇怪。