AJAX-запрос к Django view и python print to terminal ничего не делают
Я работаю над Django-сайтом для некоммерческой организации. Я нахожусь на части изображений профиля. Я пытаюсь загрузить изображения, используя изображение как кнопку для отправки. У меня есть выбор файла, который открывается. Затем он отправляется после завершения выбора файла. Он должен сохранять загруженное изображение в базе данных Django. Пока что мой AJAX-запрос к представлению Django, его функция успеха работает правильно. Однако, когда я пытаюсь вывести на терминал свой тест, в терминале python ничего не печатается. Кроме того, изображение не обновляется должным образом.
# users\views.py
...
@login_required
def profile(request):
user = get_object_or_404(afbUsers)
if request.method == 'POST':
new_pic_file = request.FILES.get('newPic')
if new_pic_file:
print('testing 123', new_pic_file.name)
# Update the logic based on your model and how you want to handle the file
user.profile_pic = new_pic_file
user.save()
messages.success(request, 'Profile image update success!')
return JsonResponse({'status': 'success'})
else:
messages.error(request, 'No file uploaded.')
return JsonResponse({'status': 'error', 'message': 'No file uploaded.'})
context = {'user': user}
return render(request, 'profile-pages/child-profile.html', context)
...
Вы уверены, что получаете правильный объект с помощью этого запроса:
user = get_object_or_404(afbUsers)
Вы не передаете никакого идентификатора или чего-либо еще. Запрос может быть валидным, но ваш код все равно поднимает здесь 404, и он возвращает 404 коду AJAX.
Пришлось сделать отдельное представление для возврата JsonResponse и рендеринга.
@login_required
def profile(request, user):
all_events = Events.objects.all()
calendaruser = get_object_or_404(afbUsers, pk=request.user.id)
form = CalendarTimeZoneForm(request.POST or None, instance=calendaruser)
profile = get_object_or_404(afbUsers, pk=user)
gallery_entries = GalleryEntry.objects.all()
publicform = UserSettingsForm(request.POST or None, instance=profile)
if request.method == "POST" and form.is_valid():
form.save()
# Redirect or indicate success
context = {
"userprofile": profile,
"publicform": publicform,
"user": user,
"gallery_entries": gallery_entries,
"events": all_events,
"calendaruser": calendaruser,
"form": form,
}
return render(request, "profile-pages/child-profile.html", context)
def upload_profile_pic(request):
# user = get_object_or_404(afbUsers, child_name = request.afbUsers.child_full_name, profile_image = request.afbUsers.profile_pic)
user = request.user.id
if request.method == "POST":
new_pic_file = request.FILES.get("newPic")
if new_pic_file:
print("testing 123", new_pic_file.name)
newPic = afbUsers.objects.get(pk=user)
# Update the logic based on your model and how you want to handle the file
newPic.profile_pic = new_pic_file
newPic.save()
return JsonResponse({"status": "success"})
else:
pass
return JsonResponse({"status": "error", "message": "No file uploaded."})