我的网站搭建(第4天) 忙?懒?细节优化

  • 发布时间:2015年12月7日 10:40
  • 作者:杨仕航

星期一,工作有点多。想添加评论功能,好吧,其实有点懒。先优化一下网站UI ^_^


1、顺便修改setting.py,设置语言为"zh-hans"。这个汉化之后,使用更加方便。

2、修改首页的样式等,过于繁杂,这里我就不贴出来了。主要使用bootstrap里面的样式。


3、过滤HTML标签(模版过滤器)

在显示博客文章列表的时候,只需要显示部分字符,即摘要。

而在显示整个博文内容的时候,就需要显示全部内容,包括html标签。

我在显示博文内容的模板标签语言 {{ blog.content }} 加了过滤器改成 {{ blog.content|safe }},表示这个内容是安全的,可以正常使用里面的html标签。这样我就可以换行、用pre等标签了。

在首页显示博客列表的模板标签中,把 {{ blog.content }} 加过滤器改成 {{ blog.content|striptags|truncatechars:100 }},过滤掉html标签和只显示前100个字符。


过滤标签还有如下:

1) striptags:过滤掉所有html 标签

2) removetags:有选择性的过滤html 标签

3) safe:原原本本显示内容,实际展示给用户的。

4) slice:对内容进行截取。


4、博文添加阅读次数字段,并实现每阅读一次自增1 实现每阅读一次自增1,这个不难实现。

打开博文连接,Django会交给views.py文件的一个指定函数处理。在获取对应的博文对象时,自增1。当然这个每打开一次链接就会加1次,不够精确。可以设置cookies,判断是否之前打开过来。若打开过了就不再自增1。

blog = Blog.objects.get(id=id)    #获取对应的博文 
blog.read_num += 1                #阅读字段自增1
blog.save()                       #保存数据


5、修改标签显示,添加显示博文数量为了显示标签列表同时也显示标签下的博文数。

那需要同时响应3个信息:标签ID,标签名,标签博文数。若直接返回整个标签集合是得不到博文数。所以我重新封装了一下,弄了一个迭代器。

from blog.models import Blog,Tag
class TagsHelper:
    def __init__(self,currenttag=''):
        self.currentTag=currenttag
        self.tags=Tag.objects.all()
        self.index=0
        self.count=len(self.tags)
    def __iter__(self):
        return self
    def next(self):
        if self.index>=self.count:
            raise StopIteration
        tag=self.tags[self.index]
        self.index=self.index+1
        
        return tag.id,tag.tag_name,len(tag.blog_set.all())  #同时返回3个信息


然后实例化这个类为tagshelper对象传递给模版文件。在模版文件如下处理:

<h4>标签</h4>
<ul>
    {% for tag_id,tag_name,tag_num in tagshelper %}
        <li>
        <a href="{% url 'detailtag' tag_id%}">{{tag_name}}</a> ({{tag_num}})
        </li>
    {% endfor %}
</ul>

明天再继续 ^_^,前期会有各种细节的东西要写。

上一篇:我的网站搭建(第5天) Django评论库

下一篇:我的网站搭建(第3天) Django分页器

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空

猜你喜欢

  • 猜测中,请稍等...