Me gustaría saber cómo puedo agregar la clase .error a los elementos de entrada (to registration app) cuando falla la validación del formulario.django elemento de entrada error css clase
Respuesta
Esto se puede hacer completamente a través de su plantilla.
se genera la plantilla de formulario para cada campo de formulario que desea probar se puede utilizar el siguiente ejemplo construir
<input type="text" class="reg-txt{% if form.fieldname.errors %} errors{% endif %}"/>
Esto le permite proporcionar la interfaz que desee sin tener que modificar el código del formulario de Django vista &.
(vale tarde que nunca)
Usted debe ser capaz de hacer esto con Django Uni Form
Ahora es fácil - nueva característica en Django 1.2
Sólo añadir un atributo de la clase de forma & eres bueno para ir. Esta característica se menciona en los documentos en virtud de una nota "de nuevo en 1.2", pero se puede encontrar la magia en django.forms.forms.BoundField.css_classes
Aquí está la API reference, y un ejemplo:
class MyForm(forms.Form):
required_css_class = "required"
error_css_class = "error"
Estoy ejecutando 1.3 y ninguna de esas clases está alguna vez en la salida de la plantilla. Estoy renderizando el campo con el {{field}} simple en un ciclo for. ¿Algo especial que deba hacer para que funcione? ¿Funciona solo al generar tablas? – Justin
Debe enviar el formulario completo con {{form}}; si lo hace, verá las clases en cualquiera de los formatos (p, tabla y lista). –
@BrianFisher según su respuesta ¿eso significa aceptar {{formulario}} como para obtener el error deseado/clase requerida o crear sus propios elementos si desea un control más fino sobre el formulario completo y las clases en caso de error? – Chris
Si desea colocar su clase CSS de error para formar widgets de entrada (no sus contenedores), se puede concluir cuál es su clase de formulario desde el siguiente:
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
Tenga cuidado con un pequeño error, esto anula cualquier clase especificada en la declaración del widget de campo (es decir, 'attrs'). Para agregar simplemente la clase de error, use esta línea (algo horrible): 'self.fields [f] .widget.attrs.update ({'clase': self.fields [f] .widget.attrs.get ('clase') , '') + 'error'}) ' – gregoltsov
Gracias Gregory, he corregido mi código. – Luca
usando una plantilla personalizada ...
Personalmente nunca tuvo mucha suerte con las soluciones de error clasificando incorporada en Django , y además , Me gusta utilizar el filtro de plantillas integrado 'etiquetas de etiquetas' en los errores, para deshacerme de todas las cosas de la lista html que no puedo descifrar cómo renderizar bien de todos modos.
Utilizo la siguiente plantilla personalizada para clasificarlos como '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 los errores individuales en su plantilla usando:
{{ form.my_field.errors|striptags|error_id}}
O hacer que toda la forma de usar algo como:
<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. Agregar clase CSS en el pseudo-elemento
- 2. Cambie la clase CSS de una entrada de error de validación con la maquinilla de afeitar
- 3. Eliminar/agregar clase CSS en el foco/desenfoque de entrada
- 4. Añadiendo clase css al campo en el error de validación en django
- 5. Tamaño de elemento de entrada predeterminado
- 6. primer elemento de CSS
- 7. CSS selecciona el primer elemento con cierta clase
- 8. Agregar clase CSS a un elemento mientras arrastra w/jQuery
- 9. Selectores CSS de entrada múltiple [tipo]
- 10. jQuery fadeIn clase de CSS
- 11. jQuery valide agregar clase al elemento de error?
- 12. Django Admin CSS falta
- 13. Agregar clase CSS con Knockout Validador
- 14. Error de conexión de entrada Android
- 15. css: anulando entrada [type = "text"]
- 16. Cómo crear el campo de entrada de contraseña en django
- 17. CSS seleccionar varios descendientes de otro elemento
- 18. Validación de entrada CheckBox en Django
- 19. css: hover error de color
- 20. Texto de la etiqueta CSS justo debajo del elemento de entrada
- 21. ¿Puede CSS alterar el atributo SRC de un elemento de entrada?
- 22. Evitar la duplicación de la forma de entrada elemento de identificación en Django
- 23. Los elementos de entrada de estilo CSS
- 24. CSS: campos de entrada de texto redondeados
- 25. Estilo CSS para un elemento que tiene clase A y clase B
- 26. Django forma de error
- 27. Cómo eliminar el elemento no seleccionado en una entrada de selección y de radio en Django
- 28. Error jQuery CSS en IE8
- 29. Error en la entrada JSF Error de conversión doble
- 30. Django Fecha de entrada de análisis?
¿Hay algo que se pueda hacer en el formulario o el widget ¿nivel? Esto parece más bien detallado, me gustaría tener esta clase de error en cada campo de entrada no válido, área de texto, seleccione ... –