2012-09-05 10 views
10

Wywołanie obiektu pola WTForms powoduje utworzenie renderowanego pola, a wszelkie argumenty są traktowane jako atrybuty.Jak dodać atrybut zawierający łącznik do pola WTForms

form.field(attribute='value') 

wróci coś takiego

<input attribute='value'> 

Jak mogę dodać HTML5 niestandardowe dane atrybuty takie jak dostarczenie danych, które zawierają łączniki, dzięki czemu unparseable w python jako pojedynczy argument słów kluczowych?

Odpowiedz

19

Tworzenie słownika z odpowiednich par klucz-wartość i używać ** aby przekazać je do wywołania polu:

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

Edytuj: Wygląda jakby komentarzem @NiklasB powinny być częścią odpowiedzi : Dla osób używających flask z flask-WTF, użyj: {{ form.field(**{'data-provide': 'foo'}) }} w swoim szablonie.

+10

Dla osób używających kolby z kolbą-WTF, użyj: {{form.field (** {'dane-dostarczaj': 'foo'})}} w twoim szablonie –

+0

Dzięki za to - świetna robota. Wykonałem następujące czynności: {{form.phone (** {'format danych': '(ddd) ddd-dddd', 'klasa': 'form-control bfh-phone', 'placeholder': 'Phone'})}} –

+0

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

0

Nie jest konieczne użycie takiego słownika w wywołaniu funkcji form.field. ** rozpakowuje słownika elementy do nazwanych parametrów dla funkcji, więc wystarczy dodać parametry Zamiast:

{{form.field (danych dostarczają „foo” =)}}

Ale czy tak po jakimkolwiek wymagane parametry dla tego pola. Innymi słowy, dlaczego warto rozpakować słownik tam, gdzie można po prostu dodać parametry?

Powiązane problemy