获取Python中mongoDB集合中已存在的文档的对象id
我在mongodb中有一个集合,我已经在其中插入了文档。现在我想更新一个文档条目,并在django模板中检索文档ID,就像我在HTML中的条目旁边使用复选框一样。我想给每个框一个唯一的ID,我计划使用它作为文档ID。。因此如何在DJANGO模板中检索文档ID?您可以使用获取Python中mongoDB集合中已存在的文档的对象id,python,django,templates,mongodb,Python,Django,Templates,Mongodb,我在mongodb中有一个集合,我已经在其中插入了文档。现在我想更新一个文档条目,并在django模板中检索文档ID,就像我在HTML中的条目旁边使用复选框一样。我想给每个框一个唯一的ID,我计划使用它作为文档ID。。因此如何在DJANGO模板中检索文档ID?您可以使用\u ID属性获取MongoDB文档的ID。但是,在Django模板中使用{{object.\u id}}会导致它抛出一个错误,说它找不到\u id属性 要解决此问题,您必须为应用程序创建自定义模板标记,并使用该标记获取_id 在
\u ID
属性获取MongoDB文档的ID。但是,在Django模板中使用{{object.\u id}}
会导致它抛出一个错误,说它找不到\u id属性
要解决此问题,您必须为应用程序创建自定义模板标记,并使用该标记获取_id
在应用程序文件夹中,创建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>
{%load appname_tags%}
这是您的mongodb记录id:{{object | mongo_id}
请记住,应用程序应该位于
settings.py
中的INSTALLED\u APPS
设置变量中,以便django加载模板标记。您可以使用\u ID
属性获取MongoDB文档的ID。但是,在Django模板中使用{{object.\u id}}
会导致它抛出一个错误,说它找不到\u id属性
要解决此问题,您必须为应用程序创建自定义模板标记,并使用该标记获取_id
在应用程序文件夹中,创建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>
{%load appname_tags%}
这是您的mongodb记录id:{{object | mongo_id}
请记住,应用程序应该位于
settings.py
中的INSTALLED\u APPS
settings变量中,以便django加载模板标记。显示一些代码,说明您是如何尝试执行此操作的,特别是卡在何处。记住StackOverflow不是一个论坛!请参阅此处的一些常见问题解答,并显示一些代码,说明您如何尝试执行此操作,以及在哪些方面遇到了问题。记住StackOverflow不是一个论坛!请参见此处的一些常见问题