我在django泛型object_list函數的分頁方面遇到了一些麻煩,它們並不真正「足夠」以彌補我的愚蠢。Django通用object_list分頁。添加而不是替換參數
我正在嘗試使用可選參數爲頁碼和類別做一個URL列表。 在urls.py的URL看起來是這樣的:
url(r'^all/(?:(?P<category>[-\w]+)/page-(?P<urlpage>\d+))?/$', views.listing, ),
類別和urlpage參數是額外的可選怎麼一回事,因爲 「(?)?」在他們周圍,這很好地工作。 views.listing是一個包裝函數看起來像這樣(我不認爲這是哪裏出現我的問題):
def listing(request,category="a-z",urlpage="1"):
extra_context_dict={}
if category=="a-z":
catqueryset=models.UserProfile.objects.all().order_by('user__username')
elif category=="z-a":
catqueryset=models.UserProfile.objects.all().order_by(-'user__username')
else:
extra_context_dict['error_message']='Unfortunately a sorting error occurred, content is listed in alphabetical order'
catqueryset=models.UserProfile.objects.all().order_by('user__username')
return object_list(
request,
queryset=catqueryset,
template_name='userlist.html',
page=urlpage,
paginate_by=10,
extra_context=extra_context_dict,
)
在我的模板userlist.html我看像這樣的鏈接(這是我想真正的問題在於):
{%if has_next%}
<a href=page-{{next}}>Next Page> ({{next}})</a>
{%else%}
而不是替換我的網址中的頁面參數鏈接添加到網址的另一個頁面參數。網址最終看起來像這樣「/所有/ AZ /頁,1/頁-2/
這並不令人驚訝的是,這是發生了什麼,但沒有頁面作爲可選參數的實際工作和Django的替換URL的舊頁面的一部分。
我寧願這個機(至少我是這麼認爲的)解決方案,但似乎無法得到它的工作。 任何提示,這是怎麼更好的urls.py或得到解決模板標籤將非常讚賞。
(也請原諒非母語英語和動態翻譯的代碼。任何反饋,如果這是一個好的或無根據的Stack-溢出的問題也很樂意採用)
雖然所有給出的解決方案都可以工作(謝謝大家),但你的解決方案不僅解決了我的問題,而且給了我一個更好的方式來使用django。這看起來非常鬆散,我的猴子補丁項目真的需要。謝謝多米尼克! BTW。我正在使用命名的URL而不是命名的視圖,爲什麼這在django開發人員中似乎不受歡迎呢?編輯:太慢編輯第一個:( – Tobias 2010-10-08 18:18:03
@Tobias - 很高興我可以幫助 - 謝謝!我不知道爲什麼(或確實是否)命名的URL在Django開發人員中不受歡迎 - 我一直使用命名的URL。就此提出一個單獨的問題(幷包括證據表明它們不受歡迎!)。 – 2010-10-10 14:05:34