Tôi đang sử dụng Flask để phát triển một ứng dụng web. Ban đầu tôi đã làm các biểu mẫu HTML theo cách thủ công và sau đó chuyển sang sử dụng WTForms (đây là một dự án giáo dục, vì vậy tôi đang hiển thị từng bước xây dựng dự án).Sử dụng các trường HTML5 với WTForms
Tôi hơi bối rối khi cố gắng thêm các trường biểu mẫu HTML5, chẳng hạn như EmailField. Tôi đã tìm kiếm tài liệu WTForms, và trực tuyến, và tôi không thể tìm ra cách tạo ra một WTForm bằng cách sử dụng một HTML5 EmailField.
Sau đó, tôi đã cài đặt mô-đun này https://pypi.python.org/pypi/wtforms-html5 cho phép và mọi thứ đã hoạt động. Nhưng tôi đã không hài lòng về việc thêm một phụ thuộc, đặc biệt là vì nó dường như không được tích cực phát triển (https://github.com/brutus/wtforms-html5).
Sau đó tôi kết thúc trên trang github của WTForms và thấy rằng thực sự có hỗ trợ cho tất cả các trường HTML5 mới, nhưng các trường này không được nhập theo mặc định. https://github.com/wtforms/wtforms/blob/master/wtforms/fields/html5.py Do đó thay vì sử dụng
from WTForms import EmailField
Như người ta sẽ suy ra từ
from WTForms import TextField
Một thay vì phải sử dụng
from wtforms.fields.html5 import EmailField
trước đây tôi đã sử dụng các mô-đun wtforms-html5 như sau
from wtforms_html5 import EmailField
Do đó, tôi đã thay đổi tất cả các lần xuất hiện của wtforms_html5
thành wtforms.fields.html5
và ứng dụng của tôi hoạt động chính xác như mong đợi.
Ok, cảm ơn bạn đã đọc tất cả nền. Bây giờ cho các câu hỏi:
Tại sao không phải bất kỳ trường html5 nào (EmailField, DateField, v.v.) được đề cập trong tài liệu WTForms?
Tại sao không các lĩnh vực nhập khẩu vào WTForms theo mặc định như những người khác
Là những lĩnh vực ổn định/kế để sử dụng?
Phương pháp hay nhất để nhập các trường từ WTForms là gì?
Đối với lĩnh vực văn bản, tôi có thể sử dụng bất kỳ những điều sau đây:
from wtforms import TextField
from wtforms.fields import TextField
from wtforms.fields.simple import TextField
Nhưng đối với EmailField, tôi phải sử dụng
from wtforms.fields.html5 import EmailField
Tôi muốn:
from wtforms.fields import TextField
from wtforms.fields import EmailField
Nhưng điều này sẽ yêu cầu thêm một dòng vào các trường [__init__][1]
tập tin, mà tôi không muốn làm vì nó là một dự án giáo dục và điều này sẽ chỉ gây nhầm lẫn cho người học.
Tôi đang tìm kiếm
- Cái nhìn sâu sắc là tại sao WTForms không tài liệu hoặc bằng cách nhập khẩu mặc định các lĩnh vực html5
- Bất kỳ lý do gì để tiếp tục sử dụng các mô-đun của bên thứ ba wtforms-html5.
Cảm ơn bạn đã trả lời thực sự hữu ích và chi tiết. Tài liệu cũng có trên github không? Tôi rất sẵn lòng viết nhanh và thêm phần phụ vào phần "Trường" đề cập đến trường HTML5 có sẵn và cách truy cập chúng - nếu bạn và những người duy trì khác quá ngắn về tài nguyên để làm vì thế. Tôi nghĩ rằng rất nhiều người tại thời điểm này có lẽ đang theo lộ trình tôi đã thực hiện và cài đặt (hoặc viết) gói pip của bên thứ ba để thêm lại các trường này. – Sixhobbits