无法理解django教程

时间:2017-03-20 07:43:22

标签: django

我正在https://docs.djangoproject.com/en/1.10/intro/tutorial03/处理正式的Django教程。我无法理解这一行。有人可以帮我分解一下吗?

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    output = ', '.join([q.question_text for q in latest_question_list])
    return HttpResponse(output)

编辑: 用户说这不是一行代码。代码格式化的方式使得它不清楚,因为它们使用大字体并且经常将单行分解为多行。以下是在网站上格式化的方式:

Question.objects.order_by('-pub_date')[:5]
output = ', '.join([q.question_text for q 
in latest_question_list])

输出行是缩进的,这让我相信它是同一行的一部分,但由于某种原因,Stack Overflow不会让我这样做。

3 个答案:

答案 0 :(得分:3)

latest_question_list = Question.objects.order_by('-pub_date')[:5]
output = ', '.join([q.question_text for q in latest_question_list])
return HttpResponse(output)

order_by('pub_date')表示按ASC升序排序。 因此order_by('-pub_date')表示按DESC降序排序。

[:5]意味着获得前5条记录。

所以

然后输出', '.join([q.question_text for q in latest_question_list]) 所以输出会变成question1, question2, question3, question 4, question 5

请记住他们在那里注意There’s a problem here, though: the page’s design is hard-coded in the view. If you want to change the way the page looks, you’ll have to edit this Python code. So let’s use Django’s template system to separate the design from Python by creating a template that the view can use.

答案 1 :(得分:1)

所有这一切都是为了从发布日期排序的问题表中取5条记录,并用所有这些记录的question_text列的逗号分隔一个字符串。

答案 2 :(得分:1)

  

因为它很方便,让我们使用Django自己的数据库API,我们在教程2中介绍过。这里有一个新的index()视图,它显示系统中最新的5个轮询问题,用逗号分隔,根据出版物日期

重点是

  

根据发布日期显示系统中最新的5个民意调查问题,以逗号分隔。

latest_question_list = Question.objects.order_by('-pub_date')[:5]

将返回添加到数据库的最后5个问题。获得前5个将是[5:]

您应该阅读[解释Python的切片表示法,以获得有关其工作原理的更多知识。

还记得第一个查询的结果已分配给latest_question_list吗?现在你需要一种显示结果的方法

这部分output = ', '.join([q.question_text for q in latest_question_list])

阅读Python Join上的这篇文章,以便更好地了解python join的工作原理。它基本上采用列表中的值并使用分隔符连接它们(在本例中为逗号)。

最后一部分[q.question_text for q in latest_question_list]称为LIST COMPREHENSION