2012-09-05 21 views
10

Llamar a un objeto de campo WTForms produce el campo representado, y cualquier argumento se toma como atributos, por ejemplo.Cómo agregar un atributo que contiene un guión a un campo WTForms

form.field(attribute='value') 

volvería algo así como

<input attribute='value'> 

¿Cómo puedo añadir datos personalizados HTML5 atributos tales como la técnica de proporcionar que contienen guiones, haciéndolos unparseable en Python como un único argumento de palabra clave?

Respuesta

19

Crear un diccionario con los correspondientes pares de valores clave y utilizar ** pasarlo a la llamada de campo:

attrs = {'data-provide': "foo"} 
form.field(**attrs) 

Edición: Parece que el comentario de @NiklasB debe ser parte de la respuesta : Para quienes usan flask con flask-WTF, use: {{ form.field(**{'data-provide': 'foo'}) }} en su plantilla.

+10

Para aquellos que usan un matraz con matraz-WTF, utilicen: {{form.field (** {'data-provide': 'foo'})}} en su plantilla –

+0

Gracias por esto, trabajo increíble. Hice lo siguiente: {{form.phone (** {'data-format': '(ddd) ddd-dddd', 'clase': 'form-control bfh-phone', 'placeholder': 'Phone'})}} –

+0

https://stackoverflow.com/questions/20440056/custom-attributes-for-flask-wtforms –

0

No es necesario utilizar un diccionario como ese en el formulario. Llamada de función de campo. El ** desempaqueta los elementos del diccionario en parámetros con nombre para la función, por lo que sólo tiene que añadir los parámetros en su lugar:

{{form.field (técnica de proporcionar 'foo' =)}}

Pero hacerlo después de cualquier parámetros requeridos para ese campo. En otras palabras, ¿por qué desempaquetar un diccionario allí mismo cuando puede agregar los parámetros?

Cuestiones relacionadas