Mi piacerebbe sapere come posso aggiungere .error class agli elementi di input (to registration app) quando la convalida del modulo fallisce.django input element error css class
risposta
Questo può essere fatto completamente attraverso il modello.
a costruire il modello di modulo per ogni campo modulo che si desidera eseguire il test è possibile utilizzare il seguente esempio costruire
<input type="text" class="reg-txt{% if form.fieldname.errors %} errors{% endif %}"/>
Questo consente di fornire l'interfaccia che si desidera senza modificare il codice del modulo Django vista &.
(meglio tardi che mai)
Si dovrebbe essere in grado di fare questo con Django Uni Form
Ora è facile - nuova funzionalità di Django 1.2
basta aggiungere un attributo alla classe form & sei a posto. Questa caratteristica è menzionato nei documenti sotto una "nuova in 1.2" nota, ma è possibile trovare la magia a django.forms.forms.BoundField.css_classes
Ecco il API reference, e un esempio:
class MyForm(forms.Form):
required_css_class = "required"
error_css_class = "error"
Sono in esecuzione 1.3 e nessuna di queste classi è mai nell'output del template. Sto rendendo il campo con il semplice {{field}} in un ciclo for. Qualcosa di speciale che devo fare per farlo funzionare? Funziona solo durante l'output di tabelle? – Justin
È necessario stampare l'intero modulo utilizzando {{modulo}}, se lo fai in questo modo vedrai le classi in qualsiasi formato (p, tabella ed elenco). –
@BrianFisher in base alla risposta significa accettare {{modulo}} per ottenere l'errore desiderato/classe richiesta o creare i propri elementi se si desidera un controllo più preciso sull'intero modulo e le classi su errore? – Chris
Se volete inserire il vostro errore di classe CSS per formare widgets di ingresso (non i loro contenitori), è possibile derivare la classe modulo dal seguente:
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
Attenzione per un piccolo trucco, però: questo sostituisce qualsiasi classe che è stata specificata nella dichiarazione del widget di campo (ad esempio 'attrs'). Per aggiungere semplicemente la classe di errore, usa questa riga (leggermente orribile): 'self.fields [f] .widget.attrs.update ({'class': self.fields [f] .widget.attrs.get ('class' , '') + 'errore'}) ' – gregoltsov
Grazie Gregory, ho corretto il mio codice. – Luca
utilizzando un modello personalizzato ...
Personalmente mai avuto molta fortuna con il costruito nel Django soluzioni di errore classificare , e inoltre , Mi piace usare il filtro di template 'striptags' incorporato sugli errori, per sbarazzarmi di tutte le cose dell'elenco html che non riesco a capire come renderizzare bene comunque.
Io uso il seguente modello personalizzato per classificarli come "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 i singoli errori nel vostro modello utilizzando:
{{ form.my_field.errors|striptags|error_id}}
o rendere l'intero modulo utilizzando qualcosa di simile:
<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. CSS @supports (:: pseudo-element)
- 2. CSS Selettore per Child of Sibling Element
- 3. Fatal error: Class 'MySQLi' non trovato
- 4. Fatal error: Class 'OAuth' non trovato in
- 5. instanceof error in php wrapper class
- 6. css non class select?
- 7. dat.gui custom css class
- 8. Mithril.js multiple css class
- 9. Django uwsgi import error
- 10. Esiste una differenza tra $ (element) .find (". Class"). Css (...) e $ (this) .css all'interno di $ (elemento) .find (". Classe"). Each() funzione?
- 11. reCaptcha mostra "input error: referer non valido"
- 12. Che cos'è css "[class * = my-class] .my-subclass" doing?
- 13. CSS After Element per inserire il collegamento mailto?
- 14. CSS :: before :: after pseudo-element della classe non funzionante
- 15. Confronta XML element element order
- 16. Fatal error: Class 'Illuminate \ Fondazione \ Application' non trovato
- 17. PHP Fatal error: Class 'Memcached' non trovato in
- 18. Come cambiare il div error error error "field_with_errors"
- 19. Cosa significa img [class * = "align"] in CSS?
- 20. jQuery - get neighborhood element
- 21. Django Class Based Views URL Variable Passing
- 22. Uso di meta class in django
- 23. Styling testo di input CSS
- 24. remove element from array matlab
- 25. Validazione input CheckBox in Django
- 26. Django Admin CSS mancante
- 27. Doctrine OneToMany error error
- 28. PHP: get array element
- 29. change element by iterator
- 30. Django: creare array di input HTML utilizzando una forma Django
C'è qualcosa che può essere fatto in forma o widget di livello? Questo sembra piuttosto prolisso, vorrei avere questa classe di errore su ogni campo di input non valido, textarea, selezionare ... –