我正在使用django 2.0.2开发一个简单的Web应用程序。我不确定我的代码有什么问题。我收到了错误
ModuleNotFoundError: No module named 'myapp.views.hello'; 'myapp.views' is not a package
这是我的
代码views.py
from django.shortcuts import render
def hello(request):
return render(request,'myapp/templates/hello.html',{})
urls.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'),
]
即使我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
答案 0 :(得分:4)
关于include函数的Django文档:
包括()
将完整的Python导入路径带到另一个URLconf的函数 应该“包含”在这个地方的模块。
这意味着在使用include
时,您应该在应用中为其提供单独的urls.py
。在您的示例中,这意味着您必须在urls.py
Django应用下创建新的myapp
。
如果您不需要单独的urls.py
,则只需导入所需的视图:
from myapp.views import hello as myapp_hello
然后像这样使用它:
urlpatterns = [
path('hello/', myapp_hello),
]