Примечание: Этот вопрос не должен сочетаться с прошлыми вопросами, которые похожи, но до Django 1.11, когда они освобождали от формы на основе шаблона.Как добавить класс CSS в виджет/поле с визуализацией формы на основе шаблонов Django 1.11
Я понимаю, что Django теперь имеет визуализацию формы на основе шаблонов. Насколько я понимаю, предполагается, что проблема заключается в том, что нужно вводить классы CSS из представления или формы, а не хранить все HTML/CSS в шаблонах.
Это моя цель: сохранить свои формы и представления, ориентированные на отображается то, что, и мои шаблоны сосредоточены на как, что отображается. Поэтому я хочу сохранить все HTML/CSS в своих шаблонах.
Итак, мои вопросы:
- Как добавить класс (например,
form-text
) для всехTextInput
виджетов из системы шаблонов? - Как добавить класс (например,
alert-warning
) ко всем сообщениям об ошибках (ошибки проверки) из системы шаблонов?
Возможно, я что-то неправильно понял об этой новой функции, поэтому, если бы я это сделал, не стесняйтесь, дайте мне знать, если это не так, как это работает, или если я прошу невозможного. В идеале я хотел бы реализовать эти изменения рендеринга формы в мастер-шаблоне.
Пример проблемы
views.py
:
class SignUp(generic.edit.CreateView):
model = models.User
template_name = 'usermgmt/sign_up.html'
form_class = forms.UserCreateForm
success_url = '/sign_up_done/'
templates/master.html
(Я хочу, чтобы положить что-то здесь, что вызывает все TextInput
виджеты, чтобы получить класс):
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<title>{% block title %}{% endblock %} | Website</title>
</head>
<body>
<div class="content-wrapper clearfix">
{% block main %}{% endblock %}
</div>
</body>
</html>
templates/usermgmt/sign_up.html
:
{% extends 'master.html' %}
{% block title %}Sign Up{% endblock %}
{% block main %}
<h1>Sign Up</h1>
<p>Enter your email to sign up!</p>
<form class="form-group" method="post">
{% csrf_token %}
<input type="hidden" name="next" value="{{ next }}">
{{ form.as_p }}
<button class="btn btn-primary" type="submit">Sign Up</button>
</form>
{% endblock %}
Удивительного ответ; как бы я стилизовал все сообщения об ошибках с помощью класса 'custom-error'? Являются ли сообщения об ошибках «виджетом»? Мне это действительно не нужно, так как я могу создать ошибку, вручную введя «field.errors», но мне любопытно, возможно ли это путем простого создания шаблона. –
расположение шаблона выше, обновленное в соответствии с ответом Анны Томас – Yunti