2012-09-05 13 views
10

Gọi đối tượng trường WTForms tạo trường được hiển thị và bất kỳ đối số nào được lấy làm thuộc tính, chẳng hạn.Cách thêm thuộc tính có dấu gạch nối vào trường WTForms

form.field(attribute='value') 

sẽ quay trở lại một cái gì đó giống như

<input attribute='value'> 

Làm thế nào tôi có thể thêm HTML5 dữ liệu tùy chỉnh các thuộc tính như dữ liệu cung cấp có chứa dấu gạch nối, làm cho chúng unparseable trong python như một đối số từ khóa duy nhất?

Trả lời

19

Tạo một cuốn từ điển với các cặp khóa-giá trị tương ứng và sử dụng ** để vượt qua nó để gọi lĩnh vực:

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

Sửa: Hình như những nhận xét của @NiklasB nên là một phần của câu trả lời : Đối với những người đang sử dụng flask với flask-WTF, hãy sử dụng: {{ form.field(**{'data-provide': 'foo'}) }} trong mẫu của bạn.

+10

Đối với những người sử dụng bình bằng bình-WTF, hãy sử dụng: {{form.field (** {'data-provide': 'foo'})}} trong mẫu của bạn –

+0

Cảm ơn vì công việc tuyệt vời này. Tôi đã làm như sau: {{form.phone (** {'định dạng dữ liệu': '(ddd) ddd-dddd', 'class': 'form-control bfh-phone', 'placeholder': 'Phone'})}} –

+0

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

0

Không cần thiết phải sử dụng từ điển giống như trong lệnh gọi hàm form.field. Các ** Giải nén các mục từ điển vào tên các tham số cho hàm, vì vậy chỉ cần thêm các thông số thay vì:

{{form.field (dữ liệu cung cấp 'foo' =)}}

Nhưng làm như vậy sau khi bất kỳ thông số bắt buộc cho trường đó. Nói cách khác, tại sao phải giải nén từ điển ngay tại đó khi bạn chỉ có thể thêm các tham số?

Các vấn đề liên quan