2017-05-05 6 views
0

그래서, 장고에서이 응용 프로그램을 제작하고이 코드를 사용하고 있습니다 :장고 : 모델 쿼리 추출물은 템플릿에 반복하지

video_select.py 파일 내 템플릿 태그 :

@register.assignment_tag 
def content_list(): 
    contentlist = vvideo.objects.all() 
    return contentlist 

내 템플릿 :

{% load video_select %} 
<article id="menu" style="height:80%;"> 
    <h2 class="major">Menu</h2> 
    <div> 
     {% for contentt in content_list %} {{ contentt.video_path }} {% endfor %} 
    </div> 
    <h2 class="major">End Menu</h2> 
</article> 

아무 것도 표시하지 않습니다. 하지만 왜 그런지 모르겠습니다.

는 반대로, 단순히 밖으로 인쇄 {%의 CONTENT_LIST의 %}는이 출력을 인쇄 않습니다
[<vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>, <vvideo: vvideo object>] 

그래서 명확하게 템플릿 태그가 노력하고 있습니다. 내 models.py에 포함 된 내용 :

class vvideo(models.Model): 
    video_path = models.CharField(max_length=200, blank=True, null=True) 

이렇게 분명히 .video_path 참조도 정확합니다.

왜 내 목록이 반복되지 않는지 이해할 수 있습니까? & 인쇄 하시겠습니까? 템플릿 태그에서 직접 iterating 시도하고 작동하고 있습니다. 그러나 각 비디오에 대해 href 링크를 만들려고하기 때문에 템플릿 자체에서 루프를 실행하고 싶습니다. 따라서 데이터베이스의 모든 동영상을 반복 재생하고 이름과 URL을 추출하여 각각의 링크를 만들어야합니다. 각 라인 출력에 필요한 항목은 두 가지입니다. 그러므로 템플릿 목록에 객체 목록을 보내고 URL과 동영상의 이름을 반복하여 추출하는 것이 좋습니다.

+2

모든 video_path 값이 비어있을 가능성이 있습니까? 나는 {{contentt.id}}을 (를) 시험해보고 아무것도 얻을 수 있는지 알아보기로했습니다. –

답변

0

실제로 템플릿 태그를 호출하여 사용하기 전에 변수에 할당해야합니다. 변수 자체를 변수처럼 참조 할 수는 없습니다.

{% content_list as my_content %} 
{% for contentt in my_content %} {{ contentt.video_path }} {% endfor %} 
+0

감사합니다. –