ListView 缺少 QuerySet。定义 ListView.model、ListView.queryset 或覆盖 ListView.get_queryset()

Moh*_*aad 4 python django listview

我真的不明白是什么导致了错误,我检查了文档,这里有一个非常相似的例子是我使用的应用程序下的 views.py、urls.py 和模板

视图.py

class SchoolListView(ListView):
    context_object_name = 'schools'
    model = models.School
Run Code Online (Sandbox Code Playgroud)

网址.py

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')
]
Run Code Online (Sandbox Code Playgroud)

和我的模板

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

我得到这个我不太明白的错误

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
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

有一个在你的错误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')
]
Run Code Online (Sandbox Code Playgroud)

既然你导入ListViewviews.py的解释不对错误使用views.ListView,你的simpy“再出口”的ListViewviews.py

可能您还定义了SchoolDetailView而不是DetailView,并且 URL 可能应该包含您要显示其详细信息的学校的主键,但是您没有提供足够的代码来解决该问题。