2

我在 mongodb 中有一个集合,我已经在其中插入了文档。现在我想更新一个文档条目,我想在 django 模板中检索文档 ID,就像我在 HTML.I 中的条目旁边使用复选框一样想给单个盒子一个唯一的 id,我打算使用与文档 id 相同的 .. 那么我如何在 DJANGO 模板中检索文档 ID

4

1 回答 1

7

您可以使用该_id属性获取 MongoDB 文档的 ID。但是{{ object._id }},在 Django 模板中使用会引发错误,提示找不到 _id 属性。

要解决这个问题,您必须为您的应用程序创建一个自定义模板标签并使用它来获取 _id。

在你的 app 文件夹中,创建一个 templatetags 文件夹并创建一些 python 文件,例如:appname_tags.py。

目录结构将是这样的

/projectdir
  /appdir
    /templatetags
      __init__.py
      appname_tags.py
    models.py
    views.py

在 appname_tags.py 中粘贴以下代码

from django import template
register = template.Library()

@register.filter("mongo_id")
def mongo_id(value):
    return str(value['_id'])

现在,您可以通过加载标签模块并将 mongo 文档对象传递给它来在模板中使用这个新的自定义模板标签。

<html>
 <body>
  {% load appname_tags %}
  <p>here is your mongodb record id: {{ object|mongo_id }}</>
 </body>
</html>

请记住,应用程序应该在INSTALLED_APPS设置变量中,settings.py以便 django 加载模板标签。

于 2013-02-20T09:38:53.507 回答