django实战项目 内容管理系统cms (七)视图层views.py3/4

立夏:立夏之日蝼蝈鸣,又五日蚯蚓出,又五日王瓜生。

2807

 

我们继续写views.py

1. views.article

在views.py中加入以下代码:

当用户直接输入url来访问页面,而页面不存在时我们要进行相关处理,django内置了一个快捷函数get_object_or_404(),  参见 django 文档

我们在管理页面编辑文章,内容部分并没有支持富文本,django可以集成各种富文本编辑器,如果你想集成ueditor可以参阅 这篇文章,我个人更喜欢用markdown来写文章,所以在django中用markdown2这个模块来实现markdown功能。你可以去github了解这个模块 github markdown2

需要注意的是代码语法高亮的问题,我们需要去到 这里 下载语 法高亮的css文件,选择其中一个css文件,复制内容存入名为Pygments.css的文件,将此文件放入static/css文件夹中,在article_page.html(我们直接复制index.html去掉<!– Center Column –>部分,放在index.html所在文件夹) 中插入以下代码:

2. article_page.html

我们直接复制index.html为article_page.html去掉<!– Center Column –>部分,放在index.html所在文件夹。然后再去掉<!– Left Column –>部分,更改中间部分(文章界面)所占的比例:

将6改为9。

接下来写article_page的<!– Center Column –>部分:

包含三部分:文章,对应的评论,评论框。

我们下载的这个模版页面内容虽然很多,但是层次很清晰,因为作者不但有良好的缩进,而且区块的开始和结束都有注释,代码清晰则利于查错,修改。所以,我们自己写的时候也要养成好习惯,层次分明,注释和命名都恰到好处。

3. 评论 点赞 收藏

在views.py中加入以下代码:

三者都需要登录才能操作。

article_id这个参数是通过article_page.html文件里href传入到urls.py然后在传入到相关处理函数的。

urlparse.urljoin()函数是python用来拼接url的,后期爬虫课程也会用到这个。

redirect()函数是django内置的一个快捷函数。

第19行,因为文章与用户是多对多关系,所以logged_user.article_set.all()会得到这个登录用户对应的所有文章(即它收藏的文章),参见 django 文档

1 条评论

  • 刘世杰 2017年5月26日 回复

    前一节的问题已经发现了 感谢分享

发表评论

电子邮件地址不会被公开。 必填项已用*标注