Как создать исключение, если входные параметры недопустимы в шаблоне Django

#python #django #templates #configuration

#python #django #шаблоны #конфигурация

Вопрос:

Есть ли какой-либо способ создать исключение, если входные параметры шаблона недопустимы? В старой версии django мы можем сделать это, как показано в приведенном ниже коде. Но как насчет последней версии django? Существует опция для установки string_if_invalid = ‘string’, но единственная причина, по которой нам нужно создавать исключение для этого, заключается в том, что мы, очевидно, не ожидаем, что почтовый сервер будет отправлять клиентам ненужные электронные письма.

Спасибо.

 # settings.py in old versions
class InvalidVarException(object):
    def __mod__(self, missing):
        try:
            missing_str=unicode(missing)
        except:
            missing_str='Failed to create string representation'
        raise Exception('Unknown template variable %r %s' % (missing, missing_str))
    def __contains__(self, search):
        if search=='%s':
            return True
        return False

TEMPLATE_DEBUG=True
TEMPLATE_STRING_IF_INVALID = InvalidVarException()
  

Ответ №1:

В Django<=1.9

 TEMPLATE_STRING_IF_INVALID = 'DEBUG WARNING: undefined template variable [%s] not found'
  

в вашем settings.py.

В Django>= 1.10

 string_if_invalid = 'DEBUG WARNING: undefined template variable [%s] not found'
  

Также проверьте эту ссылку о недопустимых переменных шаблона

И эта ссылка о движке шаблонов django backend

Комментарии:

1. Все в порядке, пожалуйста, если вы найдете решение, опубликуйте его здесь

Ответ №2:

В pytest вы можете использовать FAIL_INVALID_TEMPLATE_VARS

Смотрите документы: https://pytest-django.readthedocs.io/en/latest/usage.html#fail-on-template-vars-fail-for-invalid-variables-in-templates