Редактировать: Ответ на еще один (чуть лучший) способ сделать то, что я предлагаю, приведен здесь: Стили поля ввода формы Django
Все вышеперечисленные опцииКруто, просто подумала, что я добавлю это, потому что оно отличается.
Если вы хотите, чтобы в ваших формах использовались пользовательские стили, классы и т. д., вы можете сделать html-ввод в свой шаблон, соответствующий полю формы.Например, для CharField (виджет по умолчанию - TextInput
), допустим, вы хотите ввод текста в виде начальной загрузки.Вы должны сделать что-то вроде этого:
<input type="text" class="form-control" name="form_field_name_here">
И пока вы вводите имя поля формы, соответствует атрибуту html name
, (и виджет, вероятно, должен соответствовать входным даннымвведите также) Django будет запускать все те же валидаторы в этом поле, когда вы запускаете validate
или form.is_valid()
и
Стилирование других вещей, таких как метки, сообщения об ошибках и текст справки, не требует много обходных путей, потомуВы можете сделать что-то вроде form.field.error.as_text
и стилизовать их так, как хотите.Фактические поля - те, которые требуют некоторой возни.
Я не знаю, является ли это лучшим способом, или способом, который я рекомендовал бы, но это - способ, и это могло бы быть правильным для кого-то.
Вот полезное пошаговое руководство по оформлению стилей, и оно включает в себя большинство ответов, перечисленных в SO (например, использование attr для виджетов и настройки виджетов).https://simpleisbetterthancomplex.com/article/2017/08/19/how-to-render-django-form-manually.html