【问题标题】:Django - getting a syntax error in a class generic viewsDjango - 在类通用视图中出现语法错误
【发布时间】:2023-03-12 20:07:01
【问题描述】:

现在我正在学习 django 并浏览文档。当我尝试使用通用视图时,它给了我一个例外:

  File "/home/jeffr/Рабочий стол/codetry/mysite1/polls/views.py", line 8
     def IndexView(generic.ListView):
                          ^
  SyntaxError: invalid syntax

这是我的意见.py:

    from django.views import generic

    from .models import Choice, Question

    def IndexView(generic.ListView):
        template_name = 'polls/index.html'
         contest_object_name = 'latest_question_list'

    get_queryset(self):
        """Return the last five published questions"""
        return Question.objects.order_by('-pub_date')[:5]

    def DetailView(generic.DetailView):
        model = Question
        template_name = 'polls/detail.html'

完整的回溯粘贴可以在这里找到:http://dpaste.com/3QMN3A0

任何帮助将不胜感激,谢谢

【问题讨论】:

  • 你定义了一个*函数,你应该使用class IndexView(...)而不是def IndexView

标签: python django view syntax


【解决方案1】:

def 关键字表示您正在实现一个函数。但是在这里你不是指定一个函数,而是一个。您使用 class 关键字定义一个类,例如:

from django.views import generic

from .models import Choice, Question

class IndexView(generic.ListView):
    template_name = 'polls/index.html'
     contest_object_name = 'latest_question_list'

    def get_queryset(self):
        """Return the last five published questions"""
        return Question.objects.order_by('-pub_date')[:5]

class DetailView(generic.DetailView):
    model = Question
    template_name = 'polls/detail.html'

这会引发错误,因为函数可以接受参数,但参数名称不能包含点。

您还忘记使用def 来定义get_queryset 方法。

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2011-12-30
    • 2013-06-26
    • 2021-05-12
    • 2013-10-28
    相关资源
    最近更新 更多