Tôi muốn biết làm thế nào tôi có thể thêm lớp .error vào phần tử đầu vào (to registration app) khi xác thực biểu mẫu không thành công.yếu tố đầu vào django lỗi css lớp
Trả lời
Điều này có thể được thực hiện hoàn toàn thông qua mẫu của bạn.
Bạn xây dựng mẫu hình thức cho từng lĩnh vực hình thức mà bạn muốn kiểm tra, bạn có thể sử dụng các ví dụ sau xây dựng
<input type="text" class="reg-txt{% if form.fieldname.errors %} errors{% endif %}"/>
này cho phép bạn cung cấp giao diện bạn muốn mà không sửa đổi quan điểm & mẫu mã django.
(Muộn còn hơn không)
Bạn sẽ có thể làm điều này với Django Uni Form
Nó bây giờ dễ dàng - Tính năng mới trong Django 1,2
Chỉ cần thêm một thuộc tính trên lớp mẫu & bạn tốt để đi. Tính năng này được đề cập trong các tài liệu dưới một "mới trong 1.2" Đáng chú ý, nhưng bạn có thể tìm thấy sự kỳ diệu tại django.forms.forms.BoundField.css_classes
Đây là API reference, và một ví dụ:
class MyForm(forms.Form):
required_css_class = "required"
error_css_class = "error"
Tôi đang chạy 1,3 và không phải lớp nào trong số các lớp này có trong bản mẫu đầu ra. Tôi đang vẽ trường bằng {{field}} đơn giản trong vòng lặp for. Bất cứ điều gì đặc biệt tôi phải làm để thực hiện công việc đó? Nó chỉ hoạt động khi xuất bảng? – Justin
Bạn cần xuất toàn bộ biểu mẫu bằng {{form}}, nếu bạn làm như vậy bạn sẽ thấy các lớp ở bất kỳ định dạng nào (p, bảng và danh sách). –
@BrianFisher dựa trên câu trả lời của bạn có nghĩa là chấp nhận {{form}} để nhận lỗi mong muốn/lớp bắt buộc hoặc xây dựng các phần tử của riêng bạn nếu bạn muốn kiểm soát tốt hơn toàn bộ biểu mẫu và các lớp bị lỗi? – Chris
Nếu bạn muốn đặt lớp CSS lỗi của bạn để tạo thành widget đầu vào (không container của họ), bạn có thể lấy được lớp mẫu của bạn từ một sau:
class StyledErrorForm(forms.Form):
def is_valid(self):
ret = forms.Form.is_valid(self)
for f in self.errors:
self.fields[f].widget.attrs.update({'class': self.fields[f].widget.attrs.get('class', '') + ' error'})
return ret
Xem ra cho một bản ghi nhỏ, mặc dù - điều này sẽ ghi đè bất kỳ lớp nào được chỉ định trong khai báo widget trường (tức là 'attrs'). Để chỉ cần nối thêm lớp lỗi, sử dụng dòng này thay vào đó (hơi khủng khiếp): 'self.fields [f] .widget.attrs.update ({'class': self.fields [f] .widget.attrs.get ('class' , '') + 'error'}) ' – gregoltsov
Cảm ơn bạn Gregory, tôi đã sửa mã của mình. – Luca
sử dụng một mẫu tuỳ chỉnh ...
Cá nhân không bao giờ có nhiều may mắn bằng cách sử dụng được xây dựng trong Django lỗi classing giải pháp và bên cạnh , Tôi thích sử dụng bộ lọc mẫu 'striptags' được xây dựng trên các lỗi, để loại bỏ tất cả các công cụ danh sách html mà tôi không thể tìm ra cách để hiển thị độc đáo.
Tôi sử dụng mẫu tùy chỉnh sau để phân loại chúng thành 'error_id'.
@register.filter(is_safe=True)
@stringfilter
def error_id(value):
if value=='':
return ''
else:
return r'<span class="error_id">'+value+'</span>'
Render các lỗi cá nhân trong mẫu của bạn sử dụng:
{{ form.my_field.errors|striptags|error_id}}
Hoặc làm cho toàn bộ hình thức sử dụng một cái gì đó như:
<table border="1" cellpadding="5px" align="center">
{% for field in form.visible_fields %}
<tr>
<td> {{ field.label_tag }}: </td>
<td> {{ field }} </td>
<td> {{ field.errors|striptags|error_id }} </td>
</tr>
{% endfor %}
</table>
- 1. yếu tố đầu vào phong cách CSS
- 2. yếu tố đầu vào Lỏng
- 3. thêm lớp css đến nhiều yếu tố
- 4. Tìm 'loại' của yếu tố đầu vào
- 5. động tạo file yếu tố đầu vào
- 6. CSS Áp dụng đường viền cho tất cả các yếu tố đầu vào, trừ hộp kiểm
- 7. Loại trừ yếu tố đầu tiên trong CSS
- 8. Css yếu tố lớp phủ không vô hình
- 9. lớp css Addind để dao cạo yếu tố
- 10. bộ một yếu tố css
- 11. CSS chọn hai yếu tố tiếp theo
- 12. Query cho các yếu tố x đầu trong Django
- 13. Tập trung vào yếu tố không đầu vào/neo?
- 14. Phát hiện nhập vào các yếu tố đầu vào của một lớp nhất định
- 15. Căn chỉnh các yếu tố đầu vào theo chiều dọc
- 16. Xác nhận Jquery - Lỗi khi thêm quy tắc vào yếu tố đầu vào?
- 17. Hoán đổi các yếu tố bằng CSS?
- 18. jQuery - nhận lớp đầu tiên chỉ từ một yếu tố
- 19. CSS: yếu tố cuối trên dòng
- 20. CSS làm thế nào để chọn yếu tố xảy ra đầu tiên sau khi một yếu tố
- 21. yếu tố còn lại django cắt ngắn
- 22. yếu tố đẩy javascript ở đầu mảng
- 23. yếu tố dao động tràn ra từ một overflow: hidden yếu tố css
- 24. Thêm lớp CSS vào cột
- 25. yếu tố đầu ra trong ý kiến
- 26. AngularJS - Tập trung vào yếu tố đầu vào khi một hộp kiểm được nhấp vào
- 27. CSS chọn các yếu tố với id phần
- 28. jQuery chọn yếu tố đầu tiên mà có một lớp nhất định sau này
- 29. Styling của các yếu tố đầu vào khuyết tật - sự khác biệt giữa Chrome và Firefox
- 30. LINQ: Chuỗi không chứa yếu tố lỗi
Có bất cứ điều gì có thể được thực hiện trên các hình thức hoặc phụ tùng cấp độ? Điều này có vẻ khá dài dòng, tôi muốn có lớp lỗi này trên mọi trường nhập không hợp lệ, văn bản, chọn ... –