版权声明:

更多最新原创文章请访问:最新原创主页
更多最全原创文章请访问:更多原创主页


上一节我们把真正的index.html显示出来了,只是一个摘要,接下来我们要做的是当我们点击标题或者继续阅读的时候,会打开详情页

1 base.html的抽取

不难看出,当我们点击详情页,只不过是把首页的内容给换掉了,但是左右的标签是上下的内容还是一样的,我们有必要进行抽取出公共的内容

1 先复制一份index.html 的,命名为base.html

{% load staticfiles %}
<!DOCTYPE html>
<html>
<head><title>Black &amp; White</title><!-- meta --><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- css --><link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"><link rel="stylesheet" href="{% static 'blog/css/bootstrap.min.css' %}"><link rel="stylesheet" href="{% static 'blog/css/pace.css' %}"><link rel="stylesheet" href="{% static 'blog/css/custom.css' %}"><link rel="stylesheet" href="{% static 'blog/css/highlights/github.css' %}"><!-- js --><script src="{% static 'blog/js/jquery-2.1.3.min.js' %}"></script><script src="{% static 'blog/js/bootstrap.min.js' %}"></script><script src="{% static 'blog/js/pace.min.js' %}"></script><script src="{% static 'blog/js/modernizr.custom.js' %}"></script>
</head><body>
<div class="container"><header id="site-header"><div class="row"><div class="col-md-4 col-sm-5 col-xs-8"><div class="logo"><h1><a href="index.html"><b>Black</b> &amp; White</a></h1></div></div><!-- col-md-4 --><div class="col-md-8 col-sm-7 col-xs-4"><nav class="main-nav" role="navigation"><div class="navbar-header"><button type="button" id="trigger-overlay" class="navbar-toggle"><span class="ion-navicon"></span></button></div><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav navbar-right"><li class="cl-effect-11"><a href="index.html" data-hover="首页">首页</a></li><li class="cl-effect-11"><a href="full-width.html" data-hover="博客">博客</a></li><li class="cl-effect-11"><a href="about.html" data-hover="关于">关于</a></li><li class="cl-effect-11"><a href="contact.html" data-hover="联系">联系</a></li></ul></div><!-- /.navbar-collapse --></nav><div id="header-search-box"><a id="search-menu" href="#"><span id="search-icon" class="ion-ios-search-strong"></span></a><div id="search-form" class="search-form"><form role="search" method="get" id="searchform" action="#"><input type="search" placeholder="搜索" required><button type="submit"><span class="ion-ios-search-strong"></span></button></form></div></div></div><!-- col-md-8 --></div></header>
</div>
<div class="copyrights">Collect from <a href="http://www.cssmoban.com/">网页模板</a></div>
<div class="copyrights">Modified by <a href="http://zmrenwu.com/">追梦人物的博客</a></div><div class="content-body"><div class="container"><div class="row"><main class="col-md-8">{% block main %}{% endblock main %}</main><aside class="col-md-4">{% block toc %}{% endblock toc %}<div class="widget widget-recent-posts"><h3 class="widget-title">最新文章</h3><ul><li><a href="#">Django 博客开发入门教程:前言</a></li><li><a href="#">Django 博客使用 Markdown 自动生成文章目录</a></li><li><a href="#">部署 Django 博客</a></li></ul></div><div class="widget widget-archives"><h3 class="widget-title">归档</h3><ul><li><a href="#">2017 年 5 月</a></li><li><a href="#">2017 年 4 月</a></li><li><a href="#">2017 年 3 月</a></li></ul></div><div class="widget widget-category"><h3 class="widget-title">分类</h3><ul><li><a href="#">Django 博客教程 <span class="post-count">(13)</span></a></li><li><a href="#">Python 教程 <span class="post-count">(11)</span></a></li><li><a href="#">Django 用户认证 <span class="post-count">(8)</span></a></li></ul></div><div class="widget widget-tag-cloud"><h3 class="widget-title">标签云</h3><ul><li><a href="#">Django</a></li><li><a href="#">Python</a></li><li><a href="#">Java</a></li><li><a href="#">笔记</a></li><li><a href="#">文档</a></li><li><a href="#">AngularJS</a></li><li><a href="#">CSS</a></li><li><a href="#">JavaScript</a></li><li><a href="#">Snippet</a></li><li><a href="#">jQuery</a></li></ul></div><div class="rss"><a href=""><span class="ion-social-rss-outline"></span> RSS 订阅</a></div></aside></div></div>
</div>
<footer id="site-footer"><div class="container"><div class="row"><div class="col-md-12"><p class="copyright">&copy 2017 - 采集自<a href="http://www.cssmoban.com/"target="_blank" title="模板之家">模板之家</a>- 由<a href="http://zmrenwu.com/" title="网页模板" target="_blank">追梦人物的博客</a>修改</p></div></div></div>
</footer><!-- Mobile Menu -->
<div class="overlay overlay-hugeinc"><button type="button" class="overlay-close"><span class="ion-ios-close-empty"></span></button><nav><ul><li><a href="index.html">首页</a></li><li><a href="full-width.html">博客</a></li><li><a href="about.html">关于</a></li><li><a href="contact.html">联系</a></li></ul></nav>
</div><script src="{% static 'blog/js/script.js' %}"></script></body>
</html>

主要是修改了这里:

这里的{% block main%} 和{% block toc %}是我们自己随便命名的,当然你也可以根据你的想法进行命名

2, 接下来写我们的index.htmldetail.html,主要是写{% block main %} 和 {% block toc %}里面的代码,注意:这里我们要继承’base.html’,这里相当于base.html是index.html 和 detail.html的父类。
(1) index.html

{% extends 'base.html' %}{% block main %}{% for post in post_list %}<article class="post post-{{ post.pk }}"><header class="entry-header"><h1 class="entry-title"><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h1><div class="entry-meta"><span class="post-category"><a href="#">{{ post.category.name }}</a></span><span class="post-date"><a href="#"><time class="entry-date"datetime="{{ post.created_time }}">{{ post.created_time }}</time></a></span><span class="post-author"><a href="#">{{ post.author }}</a></span><span class="comments-link"><a href="#">4 评论</a></span><span class="views-count"><a href="#">588 阅读</a></span></div></header><div class="entry-content clearfix"><p>{{ post.excerpt }}</p><div class="read-more cl-effect-14"><a href="{{ post.get_absolute_url }}" class="more-link">继续阅读 <span class="meta-nav">→</span></a></div></div></article>{% empty %}<div class="no-post">暂时还没有发布的文章!</div>{% endfor %}<!-- 简单分页效果<div class="pagination-simple"><a href="#">上一页</a><span class="current">第 6 页 / 共 11 页</span><a href="#">下一页</a></div>--><div class="pagination"><ul><li><a href="">1</a></li><li><a href="">...</a></li><li><a href="">4</a></li><li><a href="">5</a></li><li class="current"><a href="">6</a></li><li><a href="">7</a></li><li><a href="">8</a></li><li><a href="">...</a></li><li><a href="">11</a></li></ul></div>
{% endblock main %}

(2) detail.html里面的代码:

{% extends 'base.html' %}{% block main %}<article class="post post-{{ post.pk }}"><header class="entry-header"><h1 class="entry-title">{{ post.title }}</h1><div class="entry-meta"><span class="post-category"><a href="#">{{ post.category.name }}</a></span><span class="post-date"><a href="#"><time class="entry-date"datetime="{{ post.created_time }}">{{ post.created_time }}</time></a></span><span class="post-author"><a href="#">{{ post.author }}</a></span><span class="comments-link"><a href="#">4 评论</a></span><span class="views-count"><a href="#">588 阅读</a></span></div></header><div class="entry-content clearfix">{{ post.body|safe }}</div></article><section class="comment-area" id="comment-area"><hr><h3>发表评论</h3><form action="#" method="post" class="comment-form"><div class="row"><div class="col-md-4"><label for="id_name">名字:</label><input type="text" id="id_name" name="name" required></div><div class="col-md-4"><label for="id_email">邮箱:</label><input type="email" id="id_email" name="email" required></div><div class="col-md-4"><label for="id_url">网址:</label><input type="text" id="id_url" name="url"></div><div class="col-md-12"><label for="id_comment">评论:</label><textarea name="comment" id="id_comment" required></textarea><button type="submit" class="comment-btn">发表</button></div></div>    <!-- row --></form><div class="comment-list-panel"><h3>评论列表,共 <span>4</span> 条评论</h3><ul class="comment-list list-unstyled"><li class="comment-item"><span class="nickname">追梦人物</span><time class="submit-date" datetime="2012-11-09T23:15:57+00:00">2017年3月12日 14:56</time><div class="text">文章观点又有道理又符合人性,这才是真正为了表达观点而写,不是为了迎合某某知名人士粉丝而写。我觉得如果琼瑶是前妻,生了三孩子后被一不知名的女人挖了墙角,我不信谁会说那个女人是追求真爱,说同情琼瑶骂小三的女人都是弱者。</div></li><li class="comment-item"><span class="nickname">zmrenwu</span><time class="submit-date" datetime="2012-11-09T23:15:57+00:00">2017年3月11日 23:56</time><div class="text">本能有可能会冲破格局,但格局有时候也会拘住本能。</div></li><li class="comment-item"><span class="nickname">蝙蝠侠</span><time class="submit-date" datetime="2012-11-09T23:15:57+00:00">2017年3月9日 8:56</time><div class="text">其实真理一般是属于沉默的大多数的。那些偏激的观点只能吸引那些同样偏激的人。前几年琼瑶告于妈抄袭,大家都表示大快人心,说明吃瓜观众都只是就事论事,并不是对琼瑶有偏见。</div></li><li class="comment-item"><span class="nickname">长江七号</span><time class="submit-date" datetime="2012-11-09T23:15:57+00:00">2017年2月12日 12:56</time><div class="text">观点我很喜欢!就是哎嘛本来一清二楚的,来个小三小四乱七八糟一团乱麻夹缠不清,简直麻烦要死</div></li></ul></div></section>
{% endblock main %}
{% block toc %}<div class="widget widget-content"><h3 class="widget-title">文章目录</h3><ul><li><a href="#">教程特点</a></li><li><a href="#">谁适合这个教程</a></li><li><a href="#">在线预览</a></li><li><a href="#">资源列表</a></li><li><a href="#">获取帮助</a></li></ul></div>
{% endblock toc %}

因为这里的{% block toc %}和{% endblock toc %}我们暂时还没有用到现在动的main里面的内容

2 文章详情页的显示

1 , 在blog/urls下:

 url(r'^post/(?P<pk>[0-9]+)/$',views.detail,name='detail'),

简单的说一下,因为每篇文章我们查看会显示类似与:xxx/post/1 , xxx/post/2这样子的,所以post 开头,(?P[0-9]+) 是python中的一个命名组:(?P) 先暂时固定的写,这里指的是数据库里面唯一索引的ID , [0-9]+ 说明数字出现一次或多次

2 , 在blog/views下:

def detail(request,pk):post = get_object_or_404(Post,pk=pk)return render(request,'blog/detail.html',context={'post':post})

3, 在对应的detail.html上把内容填写一下:

4,当我再一次运行一下,点击标题,或者继续阅读,我们就可以看到详情页里面的内容了。

2 加入markdown语法高亮

1,因为我是用Ubuntu系统的电脑,所以在pycharm下的terminal直接执行

sudo pip install markdown 

这里已经告诉我已经安装过了,因为我这是第三次写django练习了,
我们再安装一下:

sudo pip install Pygments

可能这个我们在项目中会什么没做,但是Pygments在后台为我们做了很多事,它把高亮的一些语法转为css样式,把代码分成了一个一个单词,现在你要想看到结果的话,直接右键查看源码就能看到了。

2, 我们在blog/views进行markdown的配置,当然啦,这里只对文章内容进行markdown显示

当我们重新运行下的时候,发现markdown并没有生效,很乱的标签:

3, 这是因为我们在detail中还没有进行设置,
在detail.html下进行设置:

safe的说明:引用:safe 是 Django 模板系统中的过滤器(Filter),可以简单地把它看成是一种函数,其作用是作用于模板变量,将模板变量的值变为经过滤器处理过后的值。例如这里 {{ post.body|safe }},本来 {{ post.body }} 经模板系统渲染后应该显示 body 本身的值,但是在后面加上 safe 过滤器后,渲染的值不再是body 本身的值,而是由 safe 函数处理后返回的值。过滤器的用法是在模板变量后加一个 | 管道符号,再加上过滤器的名称。可以连续使用多个过滤器,例如 {{ var|filter1|filter2 }}。

4 ,这时候我们再引入一套可爱的css样式,用于设置高亮的code,
在base.html中加入:
<link rel="stylesheet" href="{% static 'blog/css/highlights/github.css' %}"> 这里的样式在我们的css模板中,当然你可以自己选一套自己喜欢的

5,现在我们就可以看到我们的markdown的文本内容了:

这一节主要讲了base.html 的抽取,详情页的显示 与markdown语法的使用。

Django 快速搭建博客 第七节(文章详情页,markdown语法)相关推荐

  1. Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

    这一节主要做一些修补工作,一个是:文章阅读量的统计,另一个是自动生成文章摘要内容 1 . 文章阅读量的统计: 1 文章阅读量的统计,我们需要在model下的Post类中新加入一个views 字段用来统 ...

  2. django博客项目8:文章详情页

    首页展示的是所有文章的列表,当用户看到感兴趣的文章时,他点击文章的标题或者继续阅读的按钮,应该跳转到文章的详情页面来阅读文章的详细内容.现在让我们来开发博客的详情页面,有了前面的基础,开发流程都是一样 ...

  3. 使用coding和hexo快速搭建博客

    更多精彩内容欢迎访问我的个人博客皮皮猪:http://www.zhsh666.xyz或者http://www.zh66.club期待您的光临哦!我是皮皮猪,感谢各位光临,能为您排忧解难小站深感荣幸!祝 ...

  4. 【django】搭建博客教程(2)——Template的使用

    测试Template 前面我们只是将后端的数据显示到页面上而已,这并不能满足我们的需求,实际上,我们需要用到html,css,js,jquery等等来构建我们的博客.在界面设计方面,我们使用Boots ...

  5. Hugo+GitHub快速搭建博客

    首先,搭建一个个人的博客网站,并不复杂,在这里,我们需要用到hugo这个框架,来管理我们本地的博客仓库地址.但我在搭建的时候也踩了一些坑.记录一下.以下均是在mac环境进行的. 在mac和linux环 ...

  6. 快速搭建博客-简单篇之快速搭建

    原文地址:点此查看效果 文章目录 开篇博客-说明 第一次创建命令 致谢 开篇博客-说明 专注分享JAVA全栈技术,JAVA零基础到高级,数据结构,框架,设计模式,微服务,中间件,大数据,网络爬虫,开源 ...

  7. 从零开始搭建博客Hexo-Node-Git搭建博客

    从零开始搭建博客第一部分,Github注册及Github Pages建立 什么是 Hexo? Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在 ...

  8. Django实现简单博客系统

    Django实现简单博客系统 第一节 - 基础 1. 简单的导览图,学会不迷路 2. 基本操作介绍 3. 命令简单介绍 4. mysite:所建项目的管理功能目录 5. blog:我们创建的项目之一 ...

  9. 基于Spring Boot+Vue的博客系统 16——热门文章功能简单的实现

    废弃说明: 这个专栏的文章本意是记录笔者第一次搭建博客的过程,文章里里有很多地方的写法都不太恰当,现在已经废弃,关于SpringBoot + Vue 博客系列,笔者重新写了这个系列的文章,不敢说写的好 ...

最新文章

  1. python3 配置文件操作库 configparser 读取配置文件后 元组列表转字典
  2. Python函数封装:利用正则表达式compile、findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容
  3. 谋定技术加工领域 中国-巴对话(国际)农民丰收节贸易会
  4. MySQL Group Replication 部署 (Single Master)
  5. memset函数详细说明 1
  6. Flask中那些特殊的装饰器
  7. JS中定时器的返回数值ID值
  8. JavaScript学习之旅-9(原创)
  9. hibernate_Restrictions用法 .
  10. python xpath爬虫_[爬虫]python下的xpath清洗数据之html数据清洗
  11. 联想换机助手_Smart Switch.apk下载|S换机助手下载 v3.4.04 安卓版_最火软件站
  12. 步进电机结构C语言程序,51单片机驱动步进电机(含电路图和C语言源程序代码)
  13. Centos7环境启动mongod报polkit服务启动失败
  14. Deep Learning论文翻译(Nature Deep Review)
  15. 《速通深度学习数学基础》
  16. 数字IC所用软件及IP分类
  17. Git之将master合并到自己分支
  18. mt4服务器文件夹,MT4服务器地址在哪个文件
  19. 无法达成目标的五个关键因素
  20. Apicloud之亲加模块的使用方法

热门文章

  1. 零基础入门JAVAweb——前端开发html篇
  2. 《JavaScript DOM 编程艺术》知识点整理
  3. SEO优化解析www的域名好还是不带www的好
  4. 精神病学复习重点归纳
  5. 做硬核老爸,我用 Python
  6. 程序员2009精华本(china-pub首发)--百期后的新起点
  7. WebView 截图实现
  8. 苹果怎么用计算机,苹果电脑itunes怎么用,教您怎样使用
  9. C# 之 FileStream类介绍
  10. Java List集合深入学习