蔭試圖在我的網頁使用分頁每頁僅有10項。所以我在django文檔 here中找到了一個例子。如何以檢索在Django
from django.core.paginator import Paginator, InvalidPage, EmptyPage
def listing(request):
contact_list = Contacts.objects.all()
paginator = Paginator(contact_list, 25) # Show 25 contacts per page
# Make sure page request is an int. If not, deliver first page.
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
# If page request (9999) is out of range, deliver last page of results.
try:
contacts = paginator.page(page)
except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages)
return render_to_response('list.html', {"contacts": contacts})
這個例子中的問題是他一次加載所有項目到分頁。但在我的數據庫中有20000
條目,並且它們都不能一次加載。那麼,有沒有一種方法來優化查詢?
你確定它一次加載所有的項目嗎?查詢集()是懶惰:https://docs.djangoproject.com/en/1.4/topics/db/queries/#querysets-are-lazy – monkut
我是這麼認爲的它用來加載速度更快,當有'在1000'我的條目數據庫。現在當項目大小增加到'20000'時,它的加載非常緩慢。 –
您是否嘗試過交互式shell?嘗試一點一點地執行你的代碼(記住不要輸入「contact_list」,因爲這會加載查詢集中的所有項目)。你可能會看到究竟哪個部分需要這麼長時間。祝你好運! –