Отображение значения в виде текста вместо поля внутри формы Django - PullRequest
16 голосов
/ 16 июля 2009

Есть ли простой способ заставить Django визуализировать {{myform.name}} как

John Smith

вместо

<input id="id_name" name="name" value="John Smith" />

внутри <form> тегов? Или я поступаю неправильно?

Ответы [ 6 ]

21 голосов
/ 16 июля 2009
<form>
    {% for field in form %}
            {{ field.label }}: {{ field.value }}
    {% endfor %}
</form>

Взгляните сюда Поля формы и Работа с формами

11 голосов
/ 01 марта 2011

Старая тема, но я думаю, что некоторые люди все еще приходят сюда.

Вы тоже можете сделать что-то подобное:

from django.utils.safestring import mark_safe

class PlainTextWidget(forms.Widget):
    def render(self, _name, value, _attrs):
        return mark_safe(value) if value is not None else '-'

А в твоем виде

class SomeForm(Form):
   somename = forms.CharField(widget=PlainTextWidget)
5 голосов
/ 17 августа 2009

Кроме того, не забудьте, что вы также можете сделать {{myform.instance.name}}

3 голосов
/ 20 июля 2009

Вы также можете использовать новый виджет: я сделал это, чтобы у меня был виджет, который создавал текстовое отображение даты, и скрытую форму с такой же датой в нем, чтобы она могла быть видна пользователю, но они не могут это изменить.

Вот начальная (все еще тестируемая / подлежащая очистке) версия:

class DayLabelWidget(forms.Widget):
    def render(self, name, value, attrs):
        final_attrs = self.build_attrs(attrs, name=name)
        if hasattr(self, 'initial'):
            value = self.initial
        if type(value) == type(u''):
            value = datetime.date(*map(int, value.split('-')))
        return mark_safe(
            "%s" % value.strftime("%A (%d %b %Y)")
        ) + mark_safe(
            "<input type='hidden' name='%s' value='%s' />" % (
                name, value
            )
        )

    def _has_changed(self, initial, data):
        return False

Затем вы используете это в поле как (widget=DayLabelWidget,).

2 голосов
/ 20 сентября 2010

Я думаю, это то, что вы хотите: http://code.djangoproject.com/ticket/10427

Я исправил свой джанго и вуаля ...

2 голосов
/ 28 апреля 2010

Почему бы не использовать {{field.data}}?

...