Вы можете использовать ключевое слово with
, чтобы установить определенные переменные в вашем включаемом шаблоне:
{% include 'todo/paginator.html' with tasks=tasks_today page='page_today' %}
Затем вы можете заменить ссылки на tasks_today
в вашем шаблоне paginator на tasks
, а такжессылка на page_today
на page
Редактировать: вызов url_replace
проблематичен, поскольку он использует kwargs, а вызов, подобный {% url_replace page_today = x %}
, будет эквивалентен вызовуurlreplace(context, **{'page_today' : x})
.
Простой вызов url_replace с page = x
не будет работать правильно, поскольку он передаст аргумент ключевого слова с именем page
вместо значения page
Наивное решение будетпередать page
переменную paginator.html
и вызвать {% urlreplace **{page : 20} %}
, но шаблонизатор Django не позволяет упаковывать kwargs.
Я думаю, что лучший способ сделать это - создать url_replace_single
функция, так как в этом случае вы заменяете только одно значение. Для этого вам нужно определить параметр поля и значения в вашей функции url_replace:
@register.simple_tag(takes_context=True)
def url_replace(context, field, value, **kwargs):
query = context['request'].GET.dict()
query_dict = { field : value}
query.update(query_dict)
return urlencode(query)
Затем вызвать функцию из вашего шаблона следующим образом:
{% url_replace field=page value=x %}
недостатком является то, что это позволит вам заменить только один параметр запроса в вашем URL.