Как я могу конкатенировать строки в шаблоне Django?
Я пытаюсь локализовать компонент с помощью get_current_language
и мне нужно передать код языка внутри фильтра:
{% get_current_language as LANGUAGE_CODE %}
{{ field|set_data:'flatpickr:{"locale": LANGUAGE_CODE}' }}
но set_data
аргументом является строка. Как я могу этого добиться?
Я решил проблему с помощью простого тега и передал результат в качестве аргумента в set_data
.
@register.simple_tag()
def get_flatpickr_data(data, **kwargs):
args = data.replace(" ", "").split(",")
data_string = ", ".join(args + [f'"{k}":"{v}"' for k, v in kwargs.items()])
return 'flatpickr:{' + data_string + '}'
Затем в шаблоне:
{% load i18n %}
{% load widget_tweaks %}
{% load form_tags %}
{% get_current_language as LANGUAGE_CODE %}
{% get_flatpickr_data '"altInput":true, "altFormat": "d/m/Y", "allowInput":true' locale=LANGUAGE_CODE as data %}
<div class="form-group">
<!-- Label -->
{% if show_label %}
<label class="form-label" for="{{ field.id_for_label }}">
{{ field.label }}
</label>
{% endif %}
<!-- Input -->
{{ field|add_class:"form-control"|add_error_class:"is-invalid"|set_data:data }}
<!-- Validation feedback -->
{% if field.errors %}
<div class="invalid-feedback">
{{ field.errors }}
</div>
{% endif %}
</div>