2012-10-15 3 views
1

나는 mongodb에 이미 문서를 삽입 한 콜렉션을 가지고 있습니다. 이제는 문서 항목을 업데이트하고 장고 템플릿에서 문서 ID를 가져 오려고합니다. HTML의 항목 옆에있는 확인란을 사용하는 것과 같습니다. 개별 상자에 문서 ID와 동일한 ID를 사용할 고유 ID를 부여하려고합니다. DJANGO 템플릿의 문서 ID는 어떻게 검색합니까?이미 파이썬에서 mongoDB 컬렉션에있는 문서의 객체 ID를 얻습니다.

+3

이 코드를 어떻게 작성하려고 노력하고 있으며 어디에서 꼼짝 못하는지에 대한 몇 가지 코드를 보여줍니다. StackOverflow가 포럼이 아니란 것을 기억하십시오! 여기에 몇 가지 FAQ를 참조하십시오 http://stackoverflow.com/faq –

답변

5

_id 속성을 사용하여 MongoDB 문서의 ID를 가져올 수 있습니다. 그러나 Django 템플릿에서 {{ object._id }}을 사용하면 _id 속성을 찾을 수 없다는 오류가 발생합니다.

이 문제를 해결하려면 앱의 맞춤 템플릿 태그를 만들어 _id를 가져와야합니다.

app 폴더 안에 templatetags 폴더를 만들고 python 파일 (예 : appname_tags.py)을 만듭니다.

디렉토리 구조는 appname_tags.py 안쪽이

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

같은 것이

from django import template 
register = template.Library() 

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

은 이제로드하여 템플릿이 새 사용자 지정 템플릿 태그를 사용할 수있는 다음 코드를 붙여 넣 것 태그 모듈에 전달하고 몽고 문서 객체를 전달합니다.

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

장고 템플릿 태그를로드하는 응용 프로그램은 settings.pyINSTALLED_APPS 설정 변수에 있어야 기억하십시오.

+0

좋은 답변입니다. +1 – shaw2thefloor

관련 문제