Django формы - получение Django для создания формы, которую вы хотите - PullRequest
1 голос
/ 20 июня 2011
class BaseForm(forms.Form):
    def as_custom_table(self):
        "Returns this form rendered as HTML <tr>s -- excluding the <table></table>."
        return self._html_output(
            normal_row = u'<tr%(html_class_attr)s><td class="label_col">%(label)s</td><td class="field_col">%(field)s%(help_text)s</td></tr>',
            error_row = u'<tr><td colspan="2" class="error">%s</td></tr>',
            row_ender = u'</td></tr>',
            help_text_html = u'<br />%s',
            errors_on_separate_row = True)

Я пытаюсь понять, смогу ли я заставить Джанго выполнять тяжелую работу и визуализировать форму так, как я хочу, чтобы она отображалась.

Проблема здесь в том, что может быть одно или два поля, которые должны отображаться немного по-другому.Например, флажок «Пожалуйста, подтвердите, что вы согласны с нашими условиями», который должен занимать два столбца.

Также могут потребоваться изменения некоторых других вещей, таких как размещение ошибок.

Я мог бы переопределить метод _html_output, чтобы изменить размещение ошибок, но как насчет того, чтобы заставить отдельное поле использовать другой метод рендеринга?

Я думаю, что в конечном итоге мне нужно вернуться к созданию вручную HTML-формыв шаблоне, но мне просто интересно, сколько из этого Django может сделать для меня с некоторыми незначительными изменениями.

1 Ответ

2 голосов
/ 20 июня 2011

предложенный метод будет использовать такой шаблон:

<form action="/contact/" method="post">
    {% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>
    {% endfor %}
    <p><input type="submit" value="Send message" /></p>
</form>

Вы можете условно переопределить определенные поля, используя {{ if field.my_property }}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...