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)
来自关于include函数的 Django 文档:
包括()
一个函数,它将完整的 Python 导入路径带到另一个应该“包含”在这个地方的 URLconf 模块。
这意味着在使用时include你应该urls.py在你的应用程序中提供一个单独的位置。在您的示例中,这意味着您必须urls.py在myappDjango 应用程序下创建一个新的。
如果您不需要单独的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)