templatetags : myapp_extras.py
from django import template
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)
encoded_querystring = '&'.join(filtered_querystring)
url = '{}&{}'.format(url,encoded_querystring)
return url
home.html
{% load myapp_extras %}
.
.
.
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="{% my_url 1 'page' request.GET.urlencode%}">« first</a>
<a href="{% my_url page_obj.previous_page_number 'page' request.GET.urlencode%}">previous</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="{% my_url page_obj.next_page_number 'page' request.GET.urlencode%}">next</a>
<a href="{% my_url page_obj.paginator.num_pages 'page' request.GET.urlencode%}">last »</a>
{% endif %}
</span>
</div>
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'facligoapp'
]
views.py
def do_paginator(get_records_by_date,request):
paginator = Paginator(get_records_by_date,10)
page_number = request.GET.get('page', 1)
try:
page_obj = paginator.get_page(page_number)
except PageNotAnInteger:
page_obj = paginator.page(1)
except EmptyPage:
page_obj = paginator.page(paginator.num_pages)
return page_obj
:
:
if new_records_check_box_status is None and error_records_check_box_status is None:
get_records_by_date = Scrapper.objects.filter(start_time__date__range=(f_date, t_date))
get_records_by_date = check_drop_down_status(get_records_by_date,drop_down_status)
get_records_by_date = do_paginator(get_records_by_date,request)
根据我的模板标签,当我过滤数据时,url应该改变。但是url没有改变,模板标签也不工作。我在模板标签中也创建了init.py。有没有解决方案可以像模板标签一样改变url的结构?当我改变下一页时,url没有改变。
2条答案
按热度按时间oiopk7p51#
而不是:
试试这个:
并将其加载到模板中:
注意:您必须init.py在templatags目录中创建空的www.example.com文件。
进行上述更改后,您需要在www.example.com文件中添加此标记settings.py:
在settings.py文件中:
如果templatags目录位于应用程序中,则必须在库中添加该appname。
例如:
q3aa05252#
如果创建新的templatag文件,则需要重新启动服务器以检测到该文件。