我在 django 專案的 views.py 中有三個視圖函式,它們使用相同的三個引數:
paginator = Paginator(post_list, settings.POSTS_LIMIT)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
如何將 em 放在一個函式中(創建一個實用程式)以在我的視圖函式中使用一串代碼,而不是重復使用三個?這是我的第一個問題,謝謝:)
uj5u.com熱心網友回復:
正如您所注意到的,您可以創建一個函式來處理這個問題,將它需要的資訊作為引數。您可以將其作為輔助函式包含在您的 views.py 中,或者將其分離到 utils.py 中,然后將其匯入。假設是后者,為了整潔和面向未來
實用程式.py
from django.core.paginator import Paginator
from django.conf.settings import POSTS_LIMITS #you may have another place for your settings
from .utils import make_pagination #utils.py file in same directory
def make_pagination(request, thing_to_paginate, num_per_page=POSTS_LIMITS)
paginator = Paginator(thing_to_paginate, num_per_page)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return page_obj
視圖.py
from .utils import make_pagination
def records(request):
...
#we'll use the provided settings-based default for num_per_page
page_obj = make_pagination(request, post_list)
return render(request, 'template.html', {'page_obj': page_obj})
如果出于某種原因您想要的不僅僅是 page_obj,您可以回傳多個值,例如,
實用程式.py
...
return page_obj, paginator
視圖 py
...
page_obj, paginator = make_pagination(request, post_list)
我已經在函式本身中獲得了頁碼,但您也可以在視圖本身中執行此操作,甚至在視圖中的函式呼叫中執行此操作,例如,
make_pagination(request.GET.get('page') or 1, post_list)
(如果你走這條路,別忘了改變函式來適應不同的引數)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/474882.html
標籤:python-3.x django 功能 看法 效用
上一篇:在PHP函式中回傳if陳述句的值
下一篇:如何將多個輸出變數放入串列中?
