Да. Это абсолютно корректно.
Вы видели ManualResetEvent как способ указать на состояние. Что-то находится на (Наборе) или от (Сброса). Возникновение с некоторой продолжительностью. Любой поток, ожидающий того состояния для случая, может продолжиться.
AutoResetEvent более сопоставим с сигналом. Тот стрелял в признак, что что-то произошло. Возникновение без любой продолжительности. Обычно, но не обязательно "что-то", которое произошло, является маленьким и должно быть обработано единственным потоком - следовательно автоматический сброс после того, как единственный поток использовал событие.
Кажется, вы не привязываете данные файла к форме .
profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
This is just a matter of following the docs.
You are not using the correct form initialization in your post. In particular you are missing request.FILES parameter:
form = ProfileForm(request.POST, request.FILES)
after the above the uploaded file can be retrieved from the FILES array:
photo_file = request.FILES['photo']
Почему бы не использовать проект django-avatar (я предполагаю вы думаете добавить аватарки пользователей в свой проект на примере)?
У них есть довольно изящное решение с дополнительным тегом, который изменяет размер изображения перед его отображением в первый раз. Вы сохраняете исходное изображение и определяете размеры изображений, которые хотите принять на веб-сайте, а остальное делается автоматически для вас.