보기 쪽이 아닌 목록 개체 템플릿 쪽을 어떻게 제한합니까?


83

객체를 제한하는 방법 중 하나는 다음과 같은 함수에 제한을 추가하는 것입니다.

def ten_objects():
    obj = Model.objects.all()[0:10]  # limit to 10
    return {'objects': obj}

그러나 뷰 내부가 아닌 템플릿 내부에서 이것을 어떻게 달성합니까?

템플릿 내의 개체를 필터링하고 문자를 제한 할 수 있다는 것을 알고 있지만 실제로 루프에 표시되는 개체의 양을 어떻게 제한합니까? 템플릿을 통해. 예를 들어 다음 코드는 모든 객체를 반복합니다 ....

    <ul>
     {% for new in news %}
      <li>
       <p>{{ news.title }}</p>
       <p>{{ news.body }}</p>
      </li>
     {% endfor %}
    </ul>

루프를 끊는 방법, 예를 들어 전나무 3 개체 / 항목. 그리고 템플릿 내에서 어떻게하나요? 미리 감사드립니다.


답변:


178

slice템플릿에서 사용할 수 있는 필터가 있습니다. 이것은 뷰 내에서 슬라이싱하는 것과 똑같이 작동합니다.

{% for new in news|slice:":10" %}

2
당신은 당신이 사용하는 시나리오가있는 경우 {% for object in user.objects.all %} 사용할 수{% for object in user.objects.all|slice:":10" %}
사미르 Tendulkar는

django의 슬라이스 문서 링크를주세요.
squal

1
위의 대답과 문자 그대로 연결되어 있습니다.
다니엘 Roseman

@Daniel을 얻었습니다. github django 저장소에서 슬라이스를 검색하지만 slice_filter not slice를 찾습니다.
squal

12

슬라이스 템플릿 필터 를 사용하려는 경우

사용하도록 변경된 예는 다음과 같습니다.

<ul>
{% for new in news|slice:":3" %}
<li>
<p>{{ new.title }}</p>
<p>{{ new.body }}</p>
</li>
{% endfor %}
</ul>

1
나는 내가 잔소리하는 것을 알고 있지만 그것은 다음 {{ new.title}}과 같아야한다 : 그리고 {{ new.body }}
Hussam

이것은 받아 들여진 대답보다 더 완전한 코드 예제입니다. 이것은 더 도움이되는 대답입니다. 그래서 저는 upvoted와 그 이유를 설명하고 있습니다
Keith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.