以下视图方法返回None而不是HttpResponse对象。
def upload(request):
def get(self, request):
photos_list = Images.objects.all()
return render(self.request, 'rango/view.html', {'photos': photos_list},)
def post(self, request):
form = ImagesForm(self.request.POST, self.request.FILES)
if form.is_valid():
photo = form.save()
data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url}
else:
data = {'is_valid': False}
return JsonResponse(data)
即使我要回复渲染,我为什么要这样做?
答案 0 :(得分:0)
这是因为upload()
是基于函数的视图,而不是基于类的视图。它永远不会在您的代码中调用嵌套的get
或post
方法。
你应该像这样重写它以使它工作:
def upload(request):
if request.method == 'POST':
form = ImagesForm(request.POST, request.FILES)
if form.is_valid():
photo = form.save()
data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url}
else:
data = {'is_valid': False}
return JsonResponse(data)
else:
photos_list = Images.objects.all()
return render(request, 'rango/view.html', {'photos': photos_list},)
答案 1 :(得分:0)
您的功能看起来像class
,但您并未将其用作课程。类的self
表示正在创建的object
。在这种情况下,不需要类,因此请删除所有self
def upload(request):
photos_list = Images.objects.all()
if request.method == 'POST'
form = ImagesForm(request.POST,request.FILES)
if form.is_valid():
photo = form.save()
data = {'is_valid': True,
'name': photo.file.name, 'url': photo.file.url}
else:
data = {'is_valid': False}
return JsonResponse(data)
return render(request, 'rango/view.html', {'photos': photos_list},)