Я определенно думаю, что это то, что каждый может извлечь выгоду. Я предполагаю, что вы, вероятно, захотите продолжить использование форм / дизайнов начальной загрузки для форм повсюду, поэтому лучший способ - создать еще один файл, из которого вы делаете магию, и затем использовать его каждый раз.
Вот пример, который я получил от здесь .
{% load widget_tweaks %}
{% for hidden_field in form.hidden_fields %}
{{ hidden_field }}
{% endfor %}
{% if form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
{% for field in form.visible_fields %}
<div class="form-group">
{{ field.label_tag }}
{% if form.is_bound %}
{% if field.errors %}
{% render_field field class="form-control is-invalid" %}
{% for error in field.errors %}
<div class="invalid-feedback">
{{ error }}
</div>
{% endfor %}
{% else %}
{% render_field field class="form-control is-valid" %}
{% endif %}
{% else %}
{% render_field field class="form-control" %}
{% endif %}
{% if field.help_text %}
<small class="form-text text-muted">{{ field.help_text }}</small>
{% endif %}
</div>
{% endfor %}
Это затем передается через шаблон следующим образом (где приведенный выше код находится в файле с именем bs4_form.html):
<form method="post" novalidate>
{% csrf_token %}
{% include 'includes/bs4_form.html' with form=form %}
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Лично у меня были проблемы с рендерингом ошибок, но это можно быстро исправить, выполнив {{ error.as_p }}
вместо {{ error }}
. Это также относится ко всему остальному, что отображается как код и отмечает его правильную форму.
Надеюсь, это поможет!