Django开发博客(四)——建立文章列表

背景

博客系统还需要有一个分类列表来展示某一个分类下的文章,在之前的文章中我们在数据库中留了一个type字段,用来存储文章的类型。博客的最上方,列出了自己博客的分类。我们就按照这个分类来做文章的区分,点击某个标签,就把文章内容全部显示出来。


版本相关
操作系统:Mac OS X EI Caption
Python版本:3.4
Django版本:1.9
IDE:PyCharm


思路

思路依然是一个很简单的思路。首先建立一个地址来接收点击后跳转的页面。由于我们自己定好了分类,这个链接可以直接定一个硬链接,简单粗暴。跳转到哪个页面后,根据这个类型去数据库抓取所有的文章,再传递给列表的模版,最后用for循环把所有数据打出来,就over了。

url的定义

这次我给标题定义的是 url(r’^python/’, views.python, name=’python’) 毕竟这里需要使用的链接只有这么几个。url定了之后,就需要修改模版的url跳转和视图函数对于这个跳转的处理了

视图函数

新建一个python的函数,用来处理这部分逻辑,同理,这里也是写死的,跳转到这个界面就要显示Python的信息,因此我们要去数据库抓取type=Python的所有数据,返回给模版

views.py

def python(request):
    sql = 'select id, blog_title, blog_type, blog_timestamp, blog_body from grzx_blogbody WHERE blog_type = "Python"'
    python_blog = BlogBody.objects.raw(sql)
    return render(request, 'python_list.html', {'python_blog': python_blog})

这里也可以使用python_blog = BlogBody.objects.filter(blog_type=’Python’)来代替执行sql语句,效果是一样的。

模版修改

下载的模版文件中有一个list.html,把它名称改为python_list.html。我们就有一个展示文章列表的页面了。把里面ul标签的内容全部改为for循环打出视图函数返回的内容就行了

python_list.html

<ul>
    {% for x in python_blog %}
        <p class="ptit"><b><a href="{% url 'article' x.id %}"> {{ x.blog_title }}</a></b></p>
        <p class="ptime">发布时间:{{ x.blog_timestamp }} 作者:{{ x.blog_author }}  分类:{{ x.blog_type }} </p>
        <div class="pcon">{{ x.blog_body }}</div>
        <div class="line"></div>
    {% endfor %}
</ul>

这里我已经把一些累赘的东西去掉了,比如图片,还有一些没必要存在的A标签。每一个列表需要实现点击跳转到文章详情,这里就要利用到我们上次使用的A标签中的url跳转方式。{% url ‘article’ x.id %}。详细可参照《Django开发博客(三)——在新的页面展示文章》。
这里其实还会遇到一个问题,如果文章的内容太大,由于我们没有做限制,列表就会把所有的内容显示出来。这样其实就做成了一个文章的展示列表,而不是我们想要的标题+内容的展示列表。这个地方用Python来实现比较折腾,要先从数据库取出文章内容的数据,再做限制,我们可以用一个简单的CSS来做处理。代码如下

view.css

.pcon{line-height:3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

把view.css中的.pcon加上white-space:nowrap;overflow:hidden;text-overflow:ellipsis;就搞定了。现在点击查看,就有点博客文章列表的样子啦!

后记

可以根据这个方式,把相关的类型全部都搭建起来,文章分类就解决了,当然,还有一些不足,比如列表的分页,文章的录入,编辑、评论系统等功能还没有搭建起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点点寒彬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值