2012-10-08 3 views
4

나는 django/webfaction에 블로그를 만들고 있습니다. 현재 내 홈 페이지에는 모든 게시물의 모든 내용이 표시됩니다. 나는 각 게시물에서 몇 줄 밖에 보이지 않고 "더 많은 것을 읽으십시오"링크로 끝나는 각 게시물을 표시하기 위해 그것을 조정하고 싶습니다. 이것을 달성하는 방법? 나는 장고와 파이썬을 처음 사용한다. 친절하게 도와주세요. home.html을에서django 게시물에서 "read more"

코드 : 사전에

{% block content %} 

    {% for post in object_list %} 
    <h2>{{ post.title }} </h2> 

    <div class = "post_meta"> 
     on {{ post.created}} 
    </div> 

    <div class = "post_body"> 
     {{ post.body|safe|linebreaks}} 
    </div> 

    {% endfor %} 

{% endblock %} 

감사합니다.

답변

11

당신은 내장 템플릿 필터 doc

<div class = "post_body"> 
     {{ post.body|safe|truncatewords:"50"|linebreaks }} 
     <a href="{{ url_for_full_content }}">read more</a> 
    </div> 
+0

게시물의 길이가 50 단어 미만인 경우는 어떻습니까? – defuz

+0

@defuz 먼저 내용의 길이를 판단해야합니다. – iMom0

+0

truncatechars – eusid

2

당신은 django-model-utils 확장자의 필드 모델 SplitField의 구현을 볼 수있는자를 사용할 수 있습니다

from django.db import models 
from model_utils.fields import SplitField 

class Article(models.Model): 
    title = models.CharField(max_length=100) 
    body = SplitField() 

>>> a = Article.objects.all()[0] 
>>> a.body.content 
u'some text\n\n<!-- split -->\n\nmore text' 
>>> a.body.excerpt 
u'some text\n' 
>>> unicode(a.body) 
u'some text\n\n<!-- split -->\n\nmore text' 

를 제대로 정확하게 당신이 필요로한다. doc에서 자세한 내용을 확인하십시오.

+0

의존성 무료 방법은 자신의 splitfield를 작성하는 것이지만, IMO는 이것이 모델 논리라고 생각하지 않습니다. 여기에 사용자 정의 templatetag를 사용하는 것이 완벽하게 잘된 것처럼 보입니다. 따라서 이것은 단지 표현적인 이점을 가지고 있습니다. –

관련 문제