Tengo un formulario de Django con varios campos que estoy representando en la plantilla. También tengo algunos elementos de entrada HTML directos que quiero validar en la vista accediendo a los vars request.POST
. Si no validan, quiero insertar un error en el formulario de Django para que pueda mostrarlo en la página. ¿Hay una manera de hacer eso?Django: ¿Agregar non_field_error de la vista?
Respuesta
También puede utilizar el método bastante elegante add_error(). Funciona para Django> = 1.7.
Si configura field
como None
forma tratará el error como "no_campo" uno. Así :
form.add_error(None, "I'm non-field error")
funciona como un encanto.
Bien, puede insertar cualquier cosa en el diccionario errors
del formulario, y los errores que no son de campo van en errors['__all__']
.
¿Pero por qué mantiene algunos campos fuera del formulario de Django, solo para volver a poner sus errores al final? ¿Por qué no poner todos los campos en el formulario en primer lugar? Si es solo que está usando un modelo y quiere agregarle campos, puede hacerlo en Django simplemente declarando los campos en el nivel del formulario, luego puede definir métodos limpios para ellos dentro del formulario.
class ExtendedModelForm(forms.ModelForm):
extra_field_1 = forms.CharField()
extra_field_2 = forms.CharField()
def clean_extra_field_1(self):
...etc...
Consulte mi otra pregunta para razonar: http://stackoverflow.com/questions/4228722/django-checkboxselectmultiple El campo requiere mucha personalización que es un poco difícil de tener en el formulario. – mpen
@Mark simplemente porque desea personalizar la pantalla, no significa que no puede incluir el campo en el formulario con fines de validación y visualización de errores. –
Derecha ... si lo nombre correctamente, Django no sabrá la diferencia ¿eh? – mpen
Agregando a la respuesta de Daniel, la sintaxis específica es:
form.errors['__all__'] = form.error_class(["error msg"])
Tenga en cuenta que se puede sustituir '__all__'
con la constante NON_FIELD_ERRORS
para una mejor compatibilidad (crédito grafa).
from django.forms.forms import NON_FIELD_ERRORS
- 1. Django admin diferentes líneas para el cambio y agregar vista
- 2. Agregar navigationcontroller a la vista de detalles en vista dividida
- 3. Django deshabilita la edición (pero permite agregar) en la vista TabularInline
- 4. Django Admin - Vista personalizada de la lista de cambios
- 5. Agregar permiso de nivel de objeto a la vista genérica
- 6. Django, mostrando una vista en otra vista?
- 7. Django Redirigir a la vista anterior
- 8. Agregar campo a la vista predeterminada SPList
- 9. Agregar informes al administrador de Django
- 10. Django obtener la URL de archivos estáticos en la vista
- 11. vista previa del formulario de Django - Agregar el usuario al formulario antes de guardar
- 12. Django: una vista, varias URL?
- 13. Cómo agregar una vista detrás de otra vista en iOS
- 14. django - pisa: agregar imágenes a PDF salida
- 15. Agregar relleno en vista programáticamente
- 16. ¿Cómo extender la vista de administración de django?
- 17. Django administrador vista de lista Personalizar Nombre de la columna
- 18. django-admin: Agregar fila adicional con totales
- 19. ¿Agregar solicitud al método del modelo django?
- 20. android agregar '...' al final de la vista de texto
- 21. Múltiples aplicaciones de django en una vista
- 22. localizada fecha strftime en vista de Django
- 23. Django: Imprimir url de vista sin hardcoding la url
- 24. vista de Django volver JSON sin utilizar la plantilla
- 25. ¿Cómo haces algo después de renderizar la vista? (Django)
- 26. Formularios Django: establezca valores de campo en la vista
- 27. Cómo agregar Search_fields en Django
- 28. Agregar enlace a la página de administración de django
- 29. Programativamente agregar fragmentos al grupo de vista
- 30. Backbone.js - ¿Agregar eventos de selección cuando la vista está activa?
Para Django> = 1.7 – AliBZ
Gracias. He actualizado mi respuesta. – grafa