Я пытаюсь загрузить изображения через ajax, и внешний интерфейс, кажется, работает, и у меня есть данные изображения в request.FILES
.но изображения не загружаются на стороне сервера.
вот мое представление django:
@login_required
def update_profile_image(request):
print(request.FILES)
if request.method == 'POST':
p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if p_form.is_valid():
p_form.save()
context = {'None': 'none'}
return JsonResponse(context)
else:
return HttpResponse('None')
форма действительна, но изображение не загружено в каталог MEDIA.
моя модель:
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
def __str__(self):
return f'{ self.user.username } Profile'
и форма:
from django.db import models
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image']
кстати, это мой AJAX-вызов (который, как я уже сказал, работает).
$(document).on('submit', '#profile_edit_form', function(event){
event.preventDefault();
$.ajax({
url : "/users/update_profile_image/",
type : 'POST',
//enctype : "multipart/form-data", //it is done inside jquery
data : formdata,
cache : false,
contentType : false,
processData : false,
success : function(data) {
console.log('success');
//$('#profile_picture').html(data.)
},
error: function(data) {
console.log('image-fail');
}
});
});
Что я делаю неправильно в моей функции просмотра?
спасибо!