В MVC-модели, ответственность которой это должно санировать вход?

Просто поставьте dict = {} внутри цикла.

>>> dict = {}
>>> list = []
>>> for x in range(0, 100):
       dict[1] = x
       list.append(dict)
       dict = {}

>>> print list
16
задан Esa 15 December 2008 в 11:58
поделиться

6 ответов

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

12
ответ дан 30 November 2019 в 22:31
поделиться

Я сказал бы, что Контроллер должен санировать вход.

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

3
ответ дан 30 November 2019 в 22:31
поделиться

Я сказал бы, что это - обязанность контроллера проверить вход и удостовериться, что данные допустимы перед передачей данных к модели.

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

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

1
ответ дан 30 November 2019 в 22:31
поделиться

Модель проверит правила бизнес-логики, т.е. требования длины пароля, если пользователю разрешат выполнить действие или нет.

модель должна, очевидно, также удостовериться, что взаимодействие с базой данных сделано безопасным способом так, чтобы Внедрение SQL не было возможно.

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

я сказал бы, что выходная санитизация должна также войти в Контроллер прежде чем быть переданным Представлению.

1
ответ дан 30 November 2019 в 22:31
поделиться

Я использую два уровня проверки. Мой контроллер проверит то, что, как предполагается, является датой, дата, интервал интервал и т.д. В основном обеспечение они могут использоваться для устанавливания значений на моих объектах.

Затем мой домен имеет проверку для вещей, таких как допустимые значения и другие бизнес-правила. Они ВСЕГДА проверяются прежде, чем сохранить или взаимодействовать с отредактированным объектом.

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

1
ответ дан 30 November 2019 в 22:31
поделиться

Я склоняюсь к:

  • Помещенный синтаксический проверка в представлении ("это поле является числовым", "что поле является датой"). Это часто очень легко или даже неявно в Вашем выборе дизайна представления (например: использование средства выбора даты для полей даты).

  • Помещенный семантический нарушение в отдельном классе блока проверки допустимости ("это поле даты должен быть после того поля даты", "это может быть пустым, если это больше, чем нуль") и называют блок проверки допустимости от контроллера, пасуя назад ошибки к представлению для дисплея.

(для моих собственных псевдокорректных определений синтаксиса и семантики...)

0
ответ дан 30 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: