一直准备使用Django搭建一个个人网站,最近终于开始动手,上周已经完成了基本博客功能的搭建(http://blog.csdn.net/hcx25909/article/details/24601331),不过代码基本是copy的,还是很想掌握具体的实现过程。于是,这几天在之前的基础上继续优化博客的功能和界面,将别人代码中比较好的部分移植到自己的博客当中。主要参考的个人博客系统是:http://hansonsblog.sinaapp.com/,源代码在github上可以下到,在此向Hanson致敬,如有雷同,纯属是我抄袭。

代码托管github地址:https://github.com/huchunxu/dblog

一、概述

之前实现的功能比较简单,界面也不是很美观,如下图所示,其中还有很多问题。

在此基础上进行了很多优化:

(1)使用bootstrap对界面进一步美化,添加了背景图片,调整了整体布局

(2)评论使用了第三方多说评论系统插件,方便其他社交账号的集成

(3)修改博客的数据库位mysql

(4)删除前端添加博客的功能,只能通过后台站点管理添加博客

(5)首页博客内容缩略显示,添加翻页功能

(6)添加博客分类,回到顶部按键,调整侧边栏的显示

先来上一张整体图片:

主要使用的软件和插件版本

(1) Pycharm版本:3.1.2

(2) Django版本:1.4.10
(3) Python版本:2.7.6
(4) Bootstrap:3.0.1
(5) 多说:0.1

二、Bootstrap

        Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark
Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件。Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件:下拉菜单、按钮组、按钮下拉菜单、导航、导航条面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等。具体的使用方法和案例在Bootstrap中文网(http://www.bootcss.com/)都有非常详细的说明。
        作为初学者,可以参考宁浩网站的视频教程《HTML5 与
Bootstrap 应用实例
》(http://ninghao.net/video/665),部分内容是收费的,可以直接百度找到别人分享的资源,看完之后可以基本了解Bootstrap和CSS的使用方法。

三、多说评论

        一开始使用的是Django自带的评论系统,但是配置的比较麻烦,而且界面不是很好看,不方便集成其他的社交账号。从Hanson那里看到了多说,立刻觉得很高大上的感觉,尝试用起来。集成的方法很简单,可以参考多说的官方说明:http://dev.duoshuo.com/python-sdk,需要注意的是, 在settings中要设置宏如下:
      

如果没有在多说的官网上配置站点,这里就用默认的五个‘x’,否则会出错。

四、mysql

数据库使用的底层接口django都已经为我们提供了,所以我们只需要配置好就可以。

mysql的配置方法可以参考《Django使用MySQL数据库》(http://blog.csdn.net/hawk0930/article/details/10070513)。

需要注意的是,在使用数据库之前需要先创建数据库文件,数据库文件的默认存储位置是在/var/lib/mysql目录下。

五、博客功能

1、博客列表内容缩略

在首页的博客列表中,我们不需要每篇博客都显示全部内容,否则会导致首页过长。显示内容略缩略的方法很简单,在显示内容的部分加上truncatechars描述就可以,例如:

这样,每篇博客只显示200个字符,后面的内容会以“...”的方式提示省略,可以点击阅读全文进入查看。

2、回到顶部功能

这个功能时使用了一个小的js程序实现:

对应的css样式:

这样,在博客列表的低端,就出现一个回到顶部的图标,鼠标悬停会反色,点击回到顶端。

3、翻页

翻页使用的是django自带的Paginator插件,参考下面两篇博客:

(1)使用 Paginator 实现分页功能:http://mozillazg.com/2013/01/django-pagination-by-use-paginator.html

     (2)django智能分页函数http://www.jovesky.com/post/214/django-pagination-11/

在html中的代码:

views.py中的代码:

----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自古-月

http://blog.csdn.net/hcx25909

欢迎继续关注我的博客














django练习——博客系统优化的更多相关文章

  1. Django搭建博客网站(四)

    Django搭建博客网站(四) 最后一篇主要讲讲在后台文章编辑加入markdown,已经在文章详情页对markdown的解析. Django搭建博客网站(一) Django搭建博客网站(二) Djan ...

  2. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

  3. Django搭建博客网站(二)

    Django搭建自己的博客网站(二) 这里主要讲构建系统数据库Model. Django搭建博客网站(一) model 目前就只提供一个文章model和一个文章分类标签model,在post/mode ...

  4. Django(博客系统):基于pycharm如何一个django工程下创建多个app

    背景:通常我们创建一个django系统时,为了把业务模块划分清楚往往会把一个独立的业务模块放到一个app中,如果多个独立的业务模块就会创建多个app,一般情况下为了更好的管理这些app,会把他们都存放 ...

  5. Django练习——博客系统小试

    在上一篇博客Todolist的基础上(http://blog.csdn.net/hcx25909/article/details/24251427),本周继续进行实践,这次我要搭建一个简单的博客系统. ...

  6. Django 系列博客(十六)

    Django 系列博客(十六) 前言 本篇博客介绍 Django 的 forms 组件. 基本属性介绍 创建 forms 类时,主要涉及到字段和插件,字段用于对用户请求数据的验证,插件用于自动生成 h ...

  7. Django 系列博客(十四)

    Django 系列博客(十四) 前言 本篇博客介绍在 html 中使用 ajax 与后台进行数据交互. 什么是 ajax ajax(Asynchronous Javascript And XML)翻译 ...

  8. Django 系列博客(十三)

    Django 系列博客(十三) 前言 本篇博客介绍 Django 中的常用字段和参数. ORM 字段 AutoField int 自增列,必须填入参数 primary_key=True.当 model ...

  9. Django 系列博客(十二)

    Django 系列博客(十二) 前言 本篇博客继续介绍 Django 中的查询,分别为聚合查询和分组查询,以及 F 和 Q 查询. 聚合查询 语法:aggregate(*args, **kwargs) ...

随机推荐

  1. 数据结构之Trie树

    1. 概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. Trie一词来自retrieve,发音为/tr ...

  2. 8.1 使用Python操作SQLite数据库

    SQLite是内嵌在Python中的轻量级.基于磁盘文件袋额数据库管理系统,不需要安装和配置服务,支持使用SQL语句来访问数据库.该数据库使用C语言开发,支持大多数SQL91标准,支持原子的.一致的. ...

  3. Python中如何自定义一个计时器

    import time as t class MyTimer(): # 初始化构造函数 def __init__(self): self.prompt = "未开始计时..." s ...

  4. PHP 高级过滤器

    PHP 高级过滤器 检测一个数字是否在一个范围内 以下实例使用了 filter_var() 函数来检测一个 INT 型的变量是否在  1 到 200 内: 实例 <?php$int = 122; ...

  5. Django URL (路由系统)

    URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那 ...

  6. opencv之人脸识别

    最近在做一个类似于智能广告投放的项目,简单思路是利用opencv获取摄像头图像,然后调用接口或利用其他一些离线模型进行人脸属性识别,进而投放广告.本篇先简单介绍利用opecv进行人脸识别. # -*- ...

  7. Rails报找不到sanitize和raw方法的解决

    以下一段代码作用是对html字符串做过滤作用: sanitize(raw(content.split.map{ |s| wrap_long_string(s) }.join(' '))) 不过实际会报 ...

  8. Android中软键盘弹出时底部菜单上移问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  9. Java经典设计模式之七大结构型模式(附实例和详解)

    博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛.因此设计模式建议工作半年以上的猿友阅读起来才会理解的比较深刻.当然,你没 ...

  10. Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界

    本章主要讲Scala中的类型参数化.本章主要分成三个部分,第一部分实现一个函数式队列的数据结构,第二部分实现该结构的内部细节,最后一个部分解释其中的关键知识点.接下来的实例中将该函数式队列命名为Que ...