Из документа Django пользовательских тегов шаблонов также можно добавить takes_context
для таможенных тегов
import datetime
from django import template
register = template.Library()
@register.simple_tag(<b>takes_context=True</b>)
def current_time(<b>context</b>, format_string):
#use <b>"context"</b> variable here
return datetime.datetime.now().strftime(format_string)
Я не уверен, как переопределить существующий тег в этом конкретном сценарии :(
В любом случае, я предлагаю создать simple_tag
, который берет контекст и выполняет вашу логику внутри тега и возвращает текст перевода из БД. Если его нет в БД, верните логическое значение False
. Теперь в шаблоне проверьте это с помощью тега if
.
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def is_db_available(context):
# access your context here and do the DB check and return the translation text or 'False'
if translation_found_in_DB:
return "Some translation text"
return False
и в шаблоне
{% load custom_tags %}
{% load i18n %}
{% is_db_available as check %}
{% if check %} <!-- The if condition -->
{{ check }}
{% else %}
{% trans "This is the title." %} <!-- Calling default trans tag -->
{% endif %}