Tengo un problema raro.
Así que tengo una aplicación en la que mi modelo estaba completamente bien hasta que le agregué un campo de archivo.
Ahora recibo un error de verificación CSRF fallida, incluso si no intento cargar un archivo y lo dejo en blanco, aparece el siguiente error.
Este es mi modelo:
class Municipality(models.Model): activate_date = models.DateField() deactivate_date = models.DateField() code = models.CharField(max_length=200) name = models.CharField(max_length=200) alt_name = models.CharField(max_length=200, blank=True, null=True) logo = models.FileField( upload_to='Logo/muni', max_length=200, blank=True, null=True)Mi aplicación está configurada en AWS mediante AWS Lambda, S3 y otros servicios necesarios
Mi depósito S3 (donde se debe cargar mi archivo) está definido en mi archivo settings.py con la variable env que se ha definido en las variables de entorno de AWS Lambda
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME', default=None)No entiendo por qué mi modelo no se guarda incluso si no incluyo un archivo.
Lo raro es que cuando estoy trabajando localmente, no me da este error. Y puedo guardar este modelo con o sin cargar un archivo.
Otros modelos en los que no se define Filefield o Imagefield funcionan perfectamente en línea y localmente.
¿Alguna razón por la que recibo este error cada vez que intento agregar un campo de archivo o un campo de imagen?
NOTA: Estoy trabajando en la interfaz DjangoAdmin y no en formularios personalizados, así que creo que Django agrega automáticamente el token csrf si tengo razón.
EDITAR: Noté que mi token csrf en mi cookie de encabezados de solicitud es diferente que en la carga útil de la solicitud, ¿es esto normal?
EDITAR: actualicé mi proyecto django a v4.0, ahora el error solo dice que CSRF token missing
EDITAR: descubrí que cuando guardo un modelo en el administrador que tiene un campo de imagen/archivo, mis datos POST no se envían con mi solicitud. Entonces tiene sentido que recibo un error, falta el token CSRF.
En primer lugar, debe verificar deshaciendo los cambios que realizó en el modelo. Si el problema persiste, es posible que haya realizado algún cambio en otro lugar. Pruébelo también desde un dispositivo y una cuenta de usuario diferentes (incluso después de borrar las cookies/recargar completamente, a veces los navegadores se comportan de forma inesperada). También puede probar las respuestas de estos enlaces ( enlace 1 , enlace 2 )
Verificar la fuente html puede ayudar. Además, si está utilizando formularios de administración de django personalizados, verifíquelos nuevamente si requieren algún cambio. El uso @csrf_exempt al probar diferentes escenarios puede ayudarlo a comprender si este error realmente se debe a csrf o si hay otro problema.
También vea esto en django docs .