我真的不明白是什么原因导致错误我检查了文档,这里有一个非常类似的例子,这是我的views.py,urls.py在我的应用程序下我使用include和模板
views.朋友
class SchoolListView(ListView):
context_object_name = 'schools'
model = models.School
URLs.朋友
from django.urls import path
from . import views
#My name space
app_name = 'basicapp'
urlpatterns = [
path('', views.ListView.as_view(), name='list'),
path('details', views.DetailView.as_view(), name='details')
]
和我的模板
{% extends 'basicapp/basicapp_base.html'%}
{% block body_block %}
<div class="jumbotron">
<h1>Welcome to list of all schools</h1>
<ol>
{% for school in schools %}
<h2><li><a href="{{school.id}}">{{school.name}}</a></li></h2>
{% endfor %}
</ol>
{% endblock %}
我得到这个错误,我真的不明白
Exception Type: ImproperlyConfigured
Exception Value:
ListView is missing a QuerySet. Define ListView.model, ListView.queryset, or override ListView.get_queryset().
Traceback Switch to copy-and-paste view
C:\ProgramData\Miniconda3\lib\site-packages\django\core\handlers\exception.py in inner
response = get_response(request) ...
▶ Local vars
C:\ProgramData\Miniconda3\lib\site-packages\django\core\handlers\base.py in _get_response
response = self.process_exception_by_middleware(e, request) ...
▶ Local vars
C:\ProgramData\Miniconda3\lib\site-packages\django\core\handlers\base.py in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
C:\ProgramData\Miniconda3\lib\site-packages\django\views\generic\base.py in view
return self.dispatch(request, *args, **kwargs) ...
▶ Local vars
C:\ProgramData\Miniconda3\lib\site-packages\django\views\generic\base.py in dispatch
return handler(request, *args, **kwargs) ...
▶ Local vars
C:\ProgramData\Miniconda3\lib\site-packages\django\views\generic\list.py in get
self.object_list = self.get_queryset() ...
▶ Local vars
C:\ProgramData\Miniconda3\lib\site-packages\django\views\generic\list.py in get_queryset
'cls': self.__class__.__name__ ...
▶ Local vars
你的urls.py
有一个错误,你没有提到SchoolListView
,而是指通用的ListView
本身。你可以写下来解决这个问题:
# app/urls.py
from django.urls import path
from . import views
#My name space
app_name = 'basicapp'
urlpatterns = [
# SchoolListView instead of ListView
path('', views.SchoolListListView.as_view(), name='list'),
# probably SchoolDetailView instead of DetailView, and with a pk in the url
path('details', views.DetailView.as_view(), name='details')
]
由于您在ListView
中导入了views.py
,解释器在使用views.ListView
时没有错误,您只需在ListView
中“重新导出”views.py
。
可能你也定义了SchoolDetailView
而不是DetailView
,并且URL可能包含你想要显示详细信息的学校的主键,但是你没有提供足够的代码来解决这个问题。