Ограничение количества изображений, которые может загрузить пользователь
На моем сайте есть функция блога, пользователи могут загружать одно главное изображение и несколько вспомогательных изображений. Проблема, с которой я столкнулся, заключается в том, что я хочу иметь возможность ограничить количество изображений, которые может загрузить пользователь. Я понимаю, что могу использовать цикл for, но если пользователь вернется позже и добавит еще, то цикл for станет бесполезным. Поэтому я решил, что лучший способ сделать это - добавить в модель поле, которое будет подсчитывать количество загруженных изображений, а затем я смогу использовать оператор if для проверки, было ли загружено больше указанного количества изображений. Как я могу получить количество изображений и добавить их в пост во время его создания? Или я должен сделать это другим способом
view
@login_required
def createPostView(request):
currentUser = request.user
postForm = PostForm()
if request.method == 'POST':
postForm = PostForm(request.POST, request.FILES)
if postForm.is_valid():
PostFormID = postForm.save(commit=False)
PostFormID.author = request.user
PostFormID.save()
for f in request.FILES.getlist('images'):
test = PostImagesForm(request.POST, request.FILES)
if test.is_valid():
instance = test.save(commit=False)
instance.post_id = PostFormID.id
instance.images = f
instance.save()
return HttpResponseRedirect("/")
return render(request, 'blog/post_form.html', {'postForm': postForm, 'PostImagesForm':PostImagesForm})
Вы можете проверить общее количество элементов в списке перед циклом, используя len.
len(request.FILES.getlist('images'))
>>> 10
Так что что-то вроде:
if len(request.FILES.getlist('images')) > 3:
raise Exception("Only three images allowed")
else:
// process the images in the for loop