我有一个图片库系统,其中正在构建一个功能来编辑上载图像的属性。
@login_required
def edit(request):
if request.method == 'POST':
ZSN = request.POST['ZSN']
ZSN = 'images/' + ZSN + '.'
image = Images.objects.filter(file__startswith=ZSN)
if image:
return HttpResponseRedirect('/home/photo-edit', {'image':image})
else:
return HttpResponse("Invalid ZSN.")
else:
return render(request, 'cms/edit.html')
这是我在edit
中的views.py
方法。请注意,我将image
对象作为其属性必须编辑的图像。如果找到了图像,那么我将重定向到home / photo-edit,在这里我要显示一个HTML页面,其中包含一个带有图像属性的表单,该表单已预先填充了现有属性。
我的home / photo-edit / URL的views.py方法是
@login_required
def photoedit(request):
return render(request, 'cms/photo-edit.html', {'image':image})
但是,即使我将图像从home/edit
发送到home/photo-edit
,也无法识别此处的图像。我该怎么做呢?他的语法错误吗?
答案 0 :(得分:0)
您可以通过将ZSN
或Image
PK作为URL参数传递给下一个视图来解决。您需要这样做,因为实际的Image
实例无法直接传递到下一个视图。
例如:
urls.py
from . import views
urlpatterns = [
url(r'^home/edit/$', views.edit, name='edit'),
url(r'^home/photo-edit/(?P<photo_id>[0-9]+)/$', views.photo_edit, name='photo-edit'),
]
views.py
def edit(request):
if request.method == 'POST':
...
image = Images.objects.filter(...).first()
if image is not None:
return redirect('photo-edit', image.pk)
else:
return HttpResponse("Invalid ZSN.")
else:
return render(request, 'cms/edit.html')
def photo_edit(request, image_pk):
image = get_object_or_404(Image, pk=image_pk)
...
请注意,在此示例中,行redirect('photo-edit', image.pk)
如何将图像PK传递到下一个视图。
现在,您只需要实现视图photo_edit
以适合您的用例即可。
让我们知道这是否使您更接近解决问题。