Django: Должны ли пользовательские шаблоны простых тегов вызывать исключения или молчаливо проваливаться? - PullRequest
1 голос
/ 09 декабря 2011

Я пытался найти ответ на этот вопрос в официальных документах, но все, что я смог найти, это:

render () никогда не должен вызывать TemplateSyntaxError или любое другое исключение.Он должен молча сбоить, точно так же, как фильтры шаблонов должны

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

Вот пример (и сам вопрос):

@register.simple_tag
def foo(formfield):
    if isinstance(formfield, forms.ChoiceField):
      # do something
    else:
      # This function doesn't deal with non-ChoiceField. 
      # Should it raise exception or fail silently?

Если ваш ответ - вызвать исключение, будет ли это TemplateSyntaxError или другое исключение?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Я думаю, что ответ таков: «это зависит от того, что подходит для вашего приложения». Если вам нужно или вы хотите защитить код, создайте исключение. Если есть веская деловая причина для создания исключения, потому что что-то не будет отображаться, например, цена или что-то еще, тогда вызовите исключение или хотя бы предупреждение.

В противном случае, просто дайте ему ничего не делать и будьте счастливы, что вы не смотрите трассировку стека .NET MVC:)

1 голос
/ 09 декабря 2011

Теги шаблонов всегда должны вызывать исключение, если они не могут выдавать корректный вывод.Хотя вы можете вызвать пользовательское исключение, убедитесь, что оно расширяет TemplateSyntaxError - это гарантирует, что исключение будет немедленно перехвачено анализатором шаблонов;у вас будет доступ ко всем необходимым входным данным для детализации проблемы.

...