【问题标题】:Django module - absent views modelDjango 模块 - 缺少视图模型
【发布时间】:2019-05-14 17:06:59
【问题描述】:

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

我正在使用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.pylist

这就是我在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

【问题讨论】:

  • 不应该是from superlists import view(所以super...)吗?
  • 嗨@WillemVanOnsem,这本书特别提到了lists

标签: python django unit-testing


【解决方案1】:

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

from superlists.lists import views

编辑:

当您发布项目结构时,您的 lists Django 应用程序似乎项目的根目录 (./superlists) 之外 - 它们处于同一嵌套级别。

As the Django documentation specifies,当您使用manage.py startapp [app-name] 创建一个新应用程序时,它会创建一个具有您的lists 应用程序结构的文件夹,但您的第一个superlists 文件夹。这意味着按照设计你应该有这样的东西:

└── superlists
    ├── manage.py
    ├── lists
    │   ├── ...
    └── superlists

然后我给你的最初答案应该开始工作了。

【讨论】:

  • 嗨@wencakisa,唉,没有。 ` from superlists.lists import views ModuleNotFoundError: No module named 'superlists.lists`
  • @AndyK 你能在问题中添加你的项目结构吗?
  • 你去@wencakisa
  • @AndyK 我也用适当的解决方案更新了我的答案。 :)
【解决方案2】:

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 也有一个奇怪的位置。

【讨论】:

    猜你喜欢
    • 2016-05-31
    • 2013-01-23
    • 2020-08-05
    • 2022-01-18
    • 2021-10-02
    • 2015-01-08
    • 2015-01-26
    • 2014-12-27
    • 1970-01-01
    相关资源
    最近更新 更多