Хрустящая форма: отображение поля в виде HTML
У меня есть форма, которая содержит различные поля, некоторые из них должны быть доступны только для чтения, но вместо использования поля "только для чтения" я хотел бы переделать их как HTML.
Есть тег HTML
, который работает как шаблон, но я не могу понять, как (и если) я могу его использовать.
Предположим, что мое поле называется text
, что я должен использовать для его отображения?
HTML("This is the text {{text}}")
это не работает :(
Или я должен создать новый шаблон для нового поля в oreder, чтобы отобразить его так, как я хочу?
Я не использовал crispy form
раньше, но я пытаюсь помочь вам. В обычной форме вы можете использовать disabled=True
в связанном поле формы. Это автоматически добавит в шаблон возможность только для чтения и дополнительную валидацию, чтобы избежать изменения поля.
Согласно docs:
Булев аргумент disabled при установке в True отключает поле формы с помощью HTML-атрибута disabled так, что оно не будет редактироваться пользователями. Даже если пользователь изменит значение поля, переданное на сервер, оно будет проигнорировано в пользу значения из исходных данных формы.
.
Так что это будет гораздо безопаснее для вашей формы.
Пример:
class ExampleForm(forms.Form):
readonly_field = forms.CharField(disabled = True)
Затем в вашем HTML шаблоне:
<form method = "POST">
{% csrf_token %}
{{ form }}
<input type = "submit" value = "Submit">
</form>
Думаю, с этим можно справиться, добавив дополнительные теги шаблона crispy-form
.