Поля tipfy wtform всегда отображаются как input type = "text" - PullRequest
1 голос
/ 09 марта 2011

Я не могу найти примеры шаблонов, которые используют tipfy формы (расширенные wtforms).Например, если я хочу внедрить дату рождения, я хочу, чтобы «правильный» HTML-код пользователя вводил его дату рождения.Давайте рассмотрим пример:

это моя форма

class RegistrationForm(Form):
    name = fields.TextField('Nombre',validators=[REQUIRED])
    email = fields.TextField('Email', validators=[REQUIRED,VALID_EMAIL])
    birth_date = fields.DateTimeField('Fecha Nacimiento',format='%d/%m/%y',validators=[REQUIRED])
    password = fields.PasswordField('Password', validators=[REQUIRED])
    password_confirm = fields.PasswordField('Confirm the password', validators=[REQUIRED])

по шаблону:

<form method="post" action="{{ current_url }}" enctype="multipart/form-data" class="tipfy-form">
        <ol>
            <li>{{ form_field(form.name, class='medium') }} </li>
            <li>{{ form_field(form.email, class='medium') }}</li>
            <li>{{ form_field(form.password, class='medium') }}</li>
            <li>{{ form_field(form.password_confirm, class='medium') }}</li>
            <li>{{ form_field(form.birth_date, class='medium') }}</li>
        </ol>
                        <fieldset class="submit">
                                <input type="submit" name="submit" value="{{ _('Register') }}" class="button_auth">
                        </fieldset>
                </form>

однако поле для form.birth_date визуализировать как HTML-тег ввода с type = "text".Нужно ли переопределять метод call или html?Я хочу, чтобы визуализировать тег select с параметрами, чтобы пользователь выбирал день / месяц / год, а не наклоняя его. Я не хочу, чтобы пользователь вводил дату в текстовое поле

Если я хочу теги html5, я должен переопределить?

Я что-то не так делаю?

Спасибо!

1 Ответ

2 голосов
/ 10 марта 2011

На данный момент я решил эту проблему с помощью макроса формы

Мне пришлось использовать SelectField

DAYS = [(x,x) for x in range(1,31)]
MONTHS = [x for x in [('enero',1),('febrero',2),('marzo',3),('abril',4),('mayo',5),('julio',6),('junio',7),('agosto',8),('setiembre',9),('octubre',10),('noviembre',11),('diciembre',12)] ]
YEARS = [(x,x) for x in range(1905,2010)]

class RegistrationForm(Form):
    name = fields.TextField('Nombre',validators=[REQUIRED])
    surnames = fields.TextField('Apellidos',validators=[REQUIRED])
    email = fields.TextField('Email', validators=[REQUIRED,VALID_EMAIL])
    birth_date_day = fields.SelectField('Fecha Nacimiento',format='%d/%m/%y',validators=[REQUIRED])
    password = fields.PasswordField('Password', validators=[REQUIRED])
    password_confirm = fields.PasswordField('Confirm the password', validators=[REQUIRED])

это новый шаблон

  <form method="post" action="{{ current_url }}" enctype="multipart/form-data" class="tipfy-form">
        <ol>
            <li>{{ form_field(form.name, class='medium') }} </li>
            <li>{{ form_field(form.surnames, class='medium') }} </li>
            <li>{{ form_field(form.email, class='medium') }}</li>
            <li>{{ form_field(form.password, class='medium') }}</li>
            <li>{{ form_field(form.password_confirm, class='medium') }}</li>
            <li>{{ form_field(form.sex, class='medium') }}</li>
            <li>{{ form_field(form.birth_date, class='medium') }}</li>
            <li>{{ form_field(form.birth_month, class='medium') }}</li>
            <li>{{ form_field(form.birth_year, class='medium') }}</li>
        </ol>
                        <fieldset class="submit">
                                <input type="submit" name="submit" value="{{ _('Register') }}" class="button_auth">
                        </fieldset>
                </form>
...