Проверка CSRF не удалась после добавления поля filefield в модели
У меня странная проблема.
У меня есть приложение, в котором моя модель была в полном порядке, пока я не добавил к ней поле Filefield.
Теперь я получаю ошибку CSRF-Verification failed, даже если я не пытаюсь загрузить файл и оставляю его пустым, он выдает мне ошибку ниже.
Это моя модель:
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)
Мое приложение установлено на AWS с использованием AWS Lambda, S3 и других необходимых сервисов
Мой S3 bucket (куда должен быть загружен мой файл) определен в моем settings.py
файле с переменной env, которая была определена в переменных окружения AWS Lambda
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME', default=None)
Я не понимаю, почему моя модель не сохраняется, даже если я не включаю файл.
Странно то, что когда я работаю локально, он не выдает мне эту ошибку. И я могу сохранить эту модель с загрузкой файла или без нее.
Другие модели, где не определено поле файла или поле изображения, прекрасно работают онлайн и локально.
Есть ли причины, по которым я получаю эту ошибку при попытке добавить поле файла или поле изображения?
При использовании models.FileField
в Django, ключевым моментом является объявление enctype
следующим образом:
<form enctype="multipart/form-data" action="" method="post">
...
{% csrf_token %}
...
</form>
Смотрите здесь.
- Попробуйте очистить cookies и обновить
- Проверьте, есть ли у вас django.middleware.csrf.CsrfViewMiddleware в вашем middleware .
- Проверьте, что вы находитесь на https или у вас есть CSRF_COOKIE_SECURE=False
В первую очередь необходимо проверить, отменив изменения, внесенные в модель. Если проблема не исчезла, возможно, вы внесли изменения в другом месте. Также попробуйте сделать это с другого устройства и под другой учетной записью (даже после очистки cookies/жесткой перезагрузки браузеры иногда ведут себя неожиданно). Вы также можете попробовать ответы по этим ссылкам ( ссылка 1, ссылка 2)
Проверка html-источника может помочь.
Также, если вы используете пользовательские формы администрирования django, проверьте их еще раз, не требуют ли они каких-либо изменений. Использование @csrf_exempt
при опробовании различных сценариев может помочь вам понять, действительно ли эта ошибка вызвана csrf или есть другая проблема.
Также смотрите это в django docs.