2012-05-02 7 views
2

Я пытался реализовать загрузку изображения для изменения аватара для отдельных пользователей. Проблема, которую я имею сейчас, заключается в том, что она никогда не загружается в папку. Он работает от администратора, но он не работает на шаблоне я создалImageField не загружается

views.py

if 'avatar_upload' in request.POST: 
    avatar_form = UserAvatarForm(request.POST, request.FILES, instance=request.user.get_profile()) 
    if avatar_form.is_valid(): 
     avatar_form.save() 
     return HttpResponse(request.POST['avatar']) 
    return HttpResponse("Failed") 

Я изменил код для просмотра результатов. Я получаю имя файла в POST. Но у меня ничего нет в request.FILES. Поэтому я предполагаю, что это проблема, и я пока не понял, что может быть проблемой. Или это может быть проблемой в другом месте?

шаблон *

<form action="" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
    {% for item in avatar_form %}<p>{{ item.label }}: {{ item }}</p> 
    {% endfor %} 
    <input type="submit" value="Upload avatar" name="avatar_upload"> 
</form> 

ответ

4

Установили вы enctype="multipart/form-data" в форме в шаблоне?

+0

Я тоже пробовал с ним. И он по-прежнему не работает:/ – starcorn

+0

@starcorn, это странно, перезагрузите сервер и обновите страницу перед загрузкой? Получение имени файла в 'request.POST' вместо' request.FILES' обычно вызвано отсутствием 'multipart/form-data'. – okm

+0

Кажется, сейчас работает, но вместо этого получаю ошибку «InMemoryUploadedFile». Я думал, что Django будет обрабатывать загрузку файла в фоновом режиме. Но мне кажется, что я должен написать код, чтобы сохранить его «MEDIA_FOLDER», а также обновить URL-адрес аватара для пользователя? – starcorn

Смежные вопросы