[英]How to add pagination during filtered in django
我的 url 看起來像這樣 '''http://127.0.0.1:8000/menu/?[%27tags%27,%20%271%27]&page=2'''
我想做'http://127.0.0.1:8000/menu/?tags=2&page=2'
謝謝你們..
munu_extras.py
from django import template
from ..models import Menu
register = template.Library()
@register.simple_tag
def my_url(value,field_name,urlencode=None):
url = "{}={}".format(field_name,value )
if urlencode:
querystring = urlencode.split('=')
filtered_querystring = filter(lambda p: p.split('=')[0]!=field_name, querystring)
print(filtered_querystring)
encode_querystring = '='.join(filtered_querystring)
url = '?{}&{}'.format(querystring,url)
return url
在我的菜單中。html
{% if menus.has_previous %}
<a href="{% my_url 1 'page' request.GET.urlencode %}"><<<</a>
<a href="{% my_url menus.previous_page_number 'page' request.GET.urlencode %}"><<</a>
{% endif %}
{% if menus.has_next %}
<a href="{% my_url menus.next_page_number 'page' request.GET.urlencode %}">>></a>
<a href="{% my_url menus.paginator.num_pages 'page' request.GET.urlencode %}">>>></a>
{% endif %}
您需要使用request.GET
。 所以當你輸入 url http://127.0.0.1:8000/menu/?tags=2&page=2
時。 后面的部分?
將導致request.GET
。 假設,如果你的urls.py
,你有一個 url: path('menu',views.function,name='function')
並且在views.py
你有一個 ZC1C425268E68384FAB11
def function(request):
print(request.GET)
return HttpResponse('success')
在打印語句 output 中,它將是帶有鍵tags
的字典和分別具有值2
和2
的page
您將 url 編碼的 GET 參數拆分為=
而不是&
,以及各種類似的錯誤。
@register.simple_tag
def my_url(value, field_name, urlencode=None):
url = "?{}={}".format(field_name, value)
if urlencode:
querystring = urlencode.split('&')
filtered_querystring = filter(lambda p: p.split('=')[0] != field_name, querystring)
encoded_querystring = '&'.join(filtered_querystring)
url = '{}&{}'.format(url, encoded_querystring)
return url
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.