我的自定义模板标记名为change_page
,应更改网址中的page=x
,而不更改网址中的任何其他内容。 (这意味着在?
之前和之后的网址中的任何内容。
这是模板代码部分:(它与标准的django paginator一起使用)
{% if page_obj.has_previous %}
<a href="{{ request.path }}?{% change_page current=request.GET.urlencode page=page_obj.previous_page_number %}" class="left_sharp">Zurück</a>
{% else %}
<a tabindex="2" href="" class="noteditable">Zurück</a>
{% endif %}
<div class="screen_only">
{% for i in paginator.page_range %}
{% ifequal page_obj.number i %}
<a href="" tabindex="2" class="noteditable">{{ i }}</a>
{% else %}
<a href="{{ request.path }}?{% change_page current=request.GET.urlencode page=i %}">{{ i }}</a>
{% endifequal %}
{% endfor %}
</div>
{% if page_obj.has_next %}
<a href="{{ request.path }}?{% change_page current=request.GET.urlencode page=page_obj.next_page_number %}" class="right_sharp">Weiter</a>
{% else %}
<a href="" tabindex="2" class="noteditable">Weiter</a>
{% endif %}
</nav>
{% endif %}
模板代码change_page
的代码:
@register.simple_tag
def change_page(current="", page=""):
args = current.split('&')
all=''
for arg in args:
all += re.sub(r'page=[0-9]+', 'page='+str(page), arg) + '&'
all = all[:-1]
return all
它不起作用。 它总是返回一个空字符串。我错了什么?
答案 0 :(得分:0)
它不起作用,因为request.GET.urlencode
中没有页面参数时我什么也没做。
我在方法的开头添加了这段代码,现在它工作正常,除非它向只有键的参数添加=
,并且没有值。
if current == "":
return 'page='+str(page)
if not re.compile('page=[0-9]+').match(current):
return current + '&page=' + str(page)