簡體   English   中英

在這個django視圖中,我的函數在做什么錯?

[英]What am I doing wrong with my function within this django view?

這應該很容易...我正在上一門課程,並且以結構化的方式將view.py文件單獨用於本測驗的目的-這更像是挑戰。 好的,請求是這樣的:“現在,創建一個名為article_list的視圖,該視圖選擇所有Article實例,並返回HttpResponse之類的消息,例如“有5條文章。”請確保使用Article查詢集的len()來獲取文章。”

作為參考,第一部分起作用。 無論如何,view.py文件看起來像這樣(第一部分是我導入Article的位置……猜想我不需要渲染導入。):

from django.http import HttpResponse
from django.shortcuts import render

from .models import Article

# Write your views here
def article_list(request):
  articles = Article.objects.all()
  article_count = articles.len()
  output = "There are {} articles.".format(str(article_count))
  return HttpResponse(output)

我不確定len函數和/或str函數是否應該像這樣鏈接,或者它們是否應該包裝對象。 我嘗試將articles.len()。str()放入,這似乎沒有用。
預先感謝您的幫助,布魯斯

您可以嘗試以下方法:

article_count = len(articles)
output = "There are {} articles.".format(article_count)

len是您在對象上調用的函數,而format方法已經為您調用了str方法。

僅使用.all()來計算記錄數會帶來不必要的開銷

如果您只需要確定集合中的記錄數(而不需要實際的對象),則使用SQL的SELECT COUNT(*)在數據庫級別處理計數將更加高效。 正是出於這個原因,Django提供了count()方法。

使用.count()直接從數據庫獲取count

articles_count = Article.objects.count()
output = "There are {} articles.".format(article_count)

除非實際需要記錄實例,或者如果有特殊要求(如您的情況),則這是一種對記錄進行計數的公認方法:

確保使用Article查詢集的len()來獲取文章數。

考慮到問題的表達方式,@ Andoni的答案應該被接受。

注意:如果您只想確定集合中的記錄數,則不要在QuerySets上使用len()。 使用SQL的SELECT COUNT(*)在數據庫級別處理計數更為有效,而Django正是出於這個原因提供了count()方法。 請參閱下面的count()。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM