ModuleNotFoundError: 没有名为“myapp.views.hello”的模块;'myapp.views' 不是一个包

Ssu*_*mar -1 python django model-view-controller django-views python-3.x

我正在使用 django 2.0.2 开发一个简单的 Web 应用程序。我不确定我的代码有什么问题。我收到错误

ModuleNotFoundError: No module named 'myapp.views.hello'; 'myapp.views' is not a package
Run Code Online (Sandbox Code Playgroud)

这是我的代码

视图.py

from django.shortcuts import render
def hello(request):
   return render(request,'myapp/templates/hello.html',{})
Run Code Online (Sandbox Code Playgroud)

网址.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', include('myapp.views.hello'), name='hello'),
]
Run Code Online (Sandbox Code Playgroud)

即使我做了同样的错误 from myapp.views import *

我的代码有什么问题?

这是树结构

DjProject/
??? db.sqlite3
??? DjProject
?   ??? __init__.py
?   ??? __pycache__
?   ?   ??? __init__.cpython-36.pyc
?   ?   ??? settings.cpython-36.pyc
?   ?   ??? urls.cpython-36.pyc
?   ?   ??? wsgi.cpython-36.pyc
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? manage.py
??? myapp
    ??? admin.py
    ??? apps.py
    ??? __init__.py
    ??? migrations
    ?   ??? __init__.py
    ?   ??? __pycache__
    ??? models.py
    ??? __pycache__
    ?   ??? admin.cpython-36.pyc
    ?   ??? __init__.cpython-36.pyc
    ?   ??? models.cpython-36.pyc
    ?   ??? views.cpython-36.pyc
    ??? templates
    ?   ??? hello.html
    ??? tests.py
    ??? views.py

7 directories, 22 files
Run Code Online (Sandbox Code Playgroud)

bon*_*kic 5

来自关于include函数的 Django 文档:

包括()

一个函数,它将完整的 Python 导入路径带到另一个应该“包含”在这个地方的 URLconf 模块。

这意味着在使用时include你应该urls.py在你的应用程序中提供一个单独的位置。在您的示例中,这意味着您必须urls.pymyappDjango 应用程序下创建一个新的。

如果您不需要单独的urls.py,您可以简单地导入所需的视图:

from myapp.views import hello as myapp_hello
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

urlpatterns = [
    path('hello/', myapp_hello),
]
Run Code Online (Sandbox Code Playgroud)