Search code examples
pythondjangodjango-rest-frameworkdjango-viewsdjango-class-based-views

Django: AttributeError: 'function' object has no attribute 'as_view' showing in urls.py


i have written alot of class based views, and also configured it's urls but this particluar view is showing this error AttributeError: 'function' object has no attribute 'as_view' i cannot tell what is going on with the view

urls.py

path('<slug:course_slug>/<slug:quiz_slug>/results/', views.QuizResultsView.as_view(), name="quiz_results"),

views.py

@method_decorator([login_required, teacher_required], name='dispatch')
class QuizResultsView(DetailView):
    model = Quiz
    context_object_name = 'quiz'
    template_name = 'classroom/teachers/quiz_results.html'

    def get_context_data(self, **kwargs):
        quiz = self.get_object()
        course = Course.objects.get(slug=course_slug)
        quiz = Quiz.objects.get(slug=quiz_slug, course=course)
        taken_quizzes = quiz.taken_quizzes.select_related('student__user').order_by('-date')
        total_taken_quizzes = taken_quizzes.count()
        quiz_score = quiz.taken_quizzes.aggregate(average_score=Avg('score'))
        extra_context = {
            'taken_quizzes': taken_quizzes,
            'total_taken_quizzes': total_taken_quizzes,
            'quiz_score': quiz_score,
            'total_questions':quiz.questions.count()
        }
        kwargs.update(extra_context)
        return super().get_context_data(**kwargs)

    def get_queryset(self):
        self.kwargs['course_slug']
        self.kwargs['quiz_slug']
        return self.request.user.quizzes.all()

Solution

  • use LoginRequiredMixin instead of login_required decorator. login_required returns a function and as_view specified only for classes.