【问题标题】:TemplateDoesNotExist when using render to pass a parameter in djangodjango中使用render传递参数时的TemplateDoesNotExist
【发布时间】:2019-01-02 12:07:00
【问题描述】:

我正在尝试在使用 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。请帮忙。

【问题讨论】:

  • 尝试返回渲染(request,'cms/photo-edit/',pk)
  • 不。同样的错误。
  • try return render(request,'cms/photo-edit.html',pk) cms/templates/cms/photo-edit.html 文件夹下有照片编辑html吗???
  • pk 是一个整数。 context 必须是一个字典。看看下面的答案。这也暗示了同样的事情。
  • 是的,我知道您不需要发送上下文,但请检查您的 html 文件是否存在!您收到此 TemplateDoesNotExist 错误或不同

标签: python django django-models django-templates


【解决方案1】:

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

render(request, 'template.html', context)

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

【讨论】:

  • 如何在 render() 中给 pk 和一个 template.html?
  • render(request, 'your template name here.html', context={'pk': pk}) 现在您的模板中将有一个名为 pk 的上下文变量,其 pk 值。
  • 但这直接进入了template.html页面。我希望图像及其属性存在于 views.py 方法中。看这个。我已经描述了这里的情况stackoverflow.com/questions/51516510/…
【解决方案2】:

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

【讨论】:

  • 那么我可以在 POST 代码中包含 GET 和 POST 代码吗?
  • 我得到的视图没有返回 HttpResponse 对象。它为此返回了 None。
  • 我认为你不明白你想要做什么......你能解释一下你想要得到的结果吗?以及您的网址和模板?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多