22

从0到1搭建个人网站 七-在django模板中使用自定义属性

 4 years ago
source link: http://www.lcsays.com/blogshow?blogId=133
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
1501197892_model.jpg
稍复杂的一些展现需求,都会使得model自带的属性无法满足,因此需要做一些自定义的工作,便于在模板里使用,本节来介绍一下model的自定义属性

展示简单的文章标题

首先我们来把这样的标题《教你成为全栈工程师(Full Stack Developer) 十九-文章内容展示页面设计》去掉前面tag部分变成《十九-文章内容展示页面设计》,直接在模板里操作会比较复杂,这时我们来自定义一个get_simple_title的属性,修改web/models.py,为BlogPost类添加如下方法

def get_simple_title(self):
    return self.title.replace(self.tags.first().name, '')

这时我们修改web/templates/web/blog_show.html如下:

{% for blog_post in tag.get_latest_blogpost.all %}
    {% if forloop.counter < 5 %}
        <a href="{% url 'blog_show' %}?blogId={{ blog_post.id }}">
            {{ blog_post.get_simple_title }}
        </a>
        <br />
    {% endif %}
{% endfor %}

这样便直接展示了去掉标签后的标题了

获取最新n篇文章

在首页分标签栏目中,我们要展示最新发布的5篇文章,这同样难以在模板中实现,因此我们自定义get_latest_blogpost,在web/models.py的Tag类中添加:

def get_latest_blogpost(self, count=5):
    return self.blogpost_set.order_by('id').reverse()[0:count]

使用方法同上面文章标题用法

本节简答介绍了自定义属性的使用场景和方法,这是在模板中遇到困难时第一个想到的方法,简便易行,下一节我们来介绍丰富的编辑器ckeditor的集成


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK