使用渲染在Django中传递参数时的TemplateDoesNotExist

时间:2018-07-25 15:36:46

标签: python django django-models django-templates

我正在尝试为使用Django构建的内容管理系统中已上传的图像添加编辑功能。

@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:
            for im in image:
                pk = im.pk
            return render('/photo-edit/', pk)
        else:
            return HttpResponse("Invalid ZSN.")

    else:
        return render(request, 'cms/edit.html')

@login_required
def photoedit(request, image_pk):

    image = get_object_or_404(Image, pk=image_pk)
    return render(request, 'cms/photo-edit.html',{'image':image})

但是由于这一行,return render('/photo-edit/', pk)我遇到了TemplateDoesNotExist异常。

Django tried loading these templates, in this order:

Using engine django:

django.template.loaders.filesystem.Loader: /home/shadowsaint/Programs/my_project/templates/190 (Source does not exist)
django.template.loaders.app_directories.Loader: /home/shadowsaint/Programs/my_project/venv/local/lib/python2.7/site-packages/django/contrib/admin/templates/190 (Source does not exist)
django.template.loaders.app_directories.Loader: /home/shadowsaint/Programs/my_project/venv/local/lib/python2.7/site-packages/django/contrib/auth/templates/190 (Source does not exist)

请注意,这里190是要搜索的图像的pk。请帮忙。

2 个答案:

答案 0 :(得分:3)

您缺少一个参数,即请求变量。它是这样的:

value

因此,在这种情况下,它会读取您的pk作为模板名称。

答案 1 :(得分:0)

这是不正确的语法return render('/photo-edit/', pk),因为/photo-edit/必须是带有html扩展名的html文件。在这方面,尝试调用其他视图似乎毫无意义。采取photoedit视图中的内容,然后用它替换return render('/photo-edit/', pk)。这将按您的期望工作。