Представление класса списка не вернуло ответ HttpResponse

Я пытался заставить представление списка на основе класса отображать все записи под учетной записью пользователя (абитуриента), но при загрузке страницы мне выдается следующая ошибка:

Представление jobassessment.views.view не вернуло объект HttpResponse. Вместо этого оно вернуло None.

Для меня это звучит так, как будто диспетчер URL не запускает правильное представление, но это мой файл URL для всего сайта и приложения оценки вакансий, и я не могу найти ошибку.

Site URL.py:

urlpatterns = [
    path('admin/', admin.site.urls, name="admin"),
    path('accounts/', include('django.contrib.auth.urls'), name="accounts"),
    path('applicant/', include('userprofile.urls'), name="applicant"),
    path('assessments/', include('jobassessment.urls')),
]

URL.py приложения JobAssessment:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.AssessmentListView.as_view(), name="assessment"),
]

Это мой ListView, который называется:

class AssessmentListView(LoginRequiredMixin, generic.ListView):
    model = Assessment
    template_name ='assessments_index.html'
    paginate_by = 5
    def get(self, request, *args, **kwargs):
        # Ensure they have first created an Applicant Profile
        if not Applicant.objects.filter(user=self.request.user).exists():
            messages.info(request, "You must create a profile before you can view any assessments.")
            return redirect('profile_create_form') 

    def get_queryset(self):
        return Assessment.objects.all().filter(applicant=Applicant.objects.filter(user=self.request.user)).order_by('-assessment_stage')

Если заявитель текущего пользователя не существует, то ваше условие if не сработает, и поскольку в нем нет части else. в нем нет части else, поэтому HttpResponse не возвращается из представления. Поэтому, пожалуйста, добавьте else часть, если заявитель существует, и верните HttpResponse()

class AssessmentListView(LoginRequiredMixin, generic.ListView):
        model = Assessment
        template_name ='assessments_index.html'
        paginate_by = 5
        def get(self, request, *args, **kwargs):
            # Ensure they have first created an Applicant Profile
            if not Applicant.objects.filter(user=self.request.user).exists():
                messages.info(request, "You must create a profile before you can view any assessments.")
                return redirect('profile_create_form')
            else:
                return HttpResponse()  #<------ add corresponding HttpResponse if Applicant exists.

        def get_queryset(self):
            return Assessment.objects.all().filter(applicant=Applicant.objects.filter(user=self.request.user)).order_by('-assessment_stage')

Согласно документу django о ListView filter лучше обрабатывать его внутри get_queryset. Так что в вашем случае это будет выглядеть примерно так:

class AssessmentListView(LoginRequiredMixin, generic.ListView):
    model = Assessment
    template_name ='assessments_index.html'
    paginate_by = 5

    def get_queryset(self):
        # Ensure they have first created an Applicant Profile
        if not Applicant.objects.filter(user=self.request.user).exists():
            messages.info(request, "You must create a profile before you can view any assessments.")
            return redirect('profile_create_form') 
        else:
            return Assessment.objects.all().filter(applicant=Applicant.objects.filter(user=self.request.user)).order_by('-assessment_stage')
Вернуться на верх