Почему так сложно проверить, совпадают ли два пароля в Django?

2 ответа

Вы можете добавить часть else: для первого if .В настоящее время функция возвращает данные без установки каких-либо ошибок, даже если один из паролей отсутствует - это предполагаемое поведение?

else:
    self._errors["password"] = self.error_class(['One or both of the passwords not found'])

если «пароль1» в данных и «пароль2» в данных: Это гарантирует наличие обоих паролей. Без этой строки вы получите сообщение об ошибке в следующей строке, где вы читаете данные [пароль1] и данные [пароль2] , если любой из них отсутствует.

Следующие три строки сравнивают пароли и устанавливают соответствующее сообщение об ошибке - это требуется, не так ли?

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

1
ответ дан 1 December 2019 в 07:18
поделиться

Во-первых, вы серьезно жалуетесь на четыре строчки стандартного кода? Если вас это действительно беспокоит, создайте класс PasswordForm , содержащий эту чистую логику, и при необходимости создайте подклассы для ваших собственных форм.

Во-вторых, вы не должны проверять уникальные ограничения вручную. Как вы говорите, ModelForm сделает это за вас.

Правка после комментария

Этот «странный синтаксис» вызван тем, что проверка совпадения двух полей пароля - это другой поток , чем при обычной схеме. Для начала вы проверяете основной метод clean , а не специфичный для поля clean_myfield . Если бы это было последнее, вы просто вызываете исключение, и Django действительно удаляет данные поля.

Так что нет, это не 7 строк в каждой форме - см. Мое примечание о подклассах - и определенно не 7 строк, умноженных на несколько полей, потому что вы не хотите делать это для любой другой тип поля.

4
ответ дан 1 December 2019 в 07:18
поделиться
Другие вопросы по тегам:

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