九、多说,markdown和代码高亮

添加多说

在Django1.5版本前是有内置的评论系统的, 不过现在已经放弃使用了, 在国内比较常用的是多说, 在国外是disqus, 因为文章主要面对国内用户, 所以采用多说。

在网站上注册账号或者直接用社交账号进行登录,并会生成一个short_name, 可以在个人界面中的工具中找到一段通用代码, 这段代码非常重要, 用于多说评论框的代码段:

  1. <!-- 多说评论框 start -->
  2. <div class="ds-thread" data-thread-key="请将此处替换成文章在你的站点中的ID" data-title="请替换成文章的标题" data-url="请替换成文章的网址"></div>
  3. <!-- 多说评论框 end -->
  4. <!-- 多说公共JS代码 start (一个网页只需插入一次) -->
  5. <script type="text/javascript">
  6. var duoshuoQuery = {short_name:"请在此处替换成自己的短名"};
  7. (function() {
  8. var ds = document.createElement('script');
  9. ds.type = 'text/javascript';ds.async = true;
  10. ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
  11. ds.charset = 'UTF-8';
  12. (document.getElementsByTagName('head')[0]
  13. || document.getElementsByTagName('body')[0]).appendChild(ds);
  14. })();
  15. </script>
  16. <!-- 多说公共JS代码 end -->

在templates中新建一个duoshuo.html并将代码放入其中, 并做一些修改。

然后在my_blog/article/models.py中重写get_absolute_url方法。

  1. from django.db import models
  2. from django.core.urlresolvers import reverse
  3. # Create your models here.
  4. class Article(models.Model) :
  5. title = models.CharField(max_length = 100) #博客题目
  6. category = models.CharField(max_length = 50, blank = True) #博客标签
  7. date_time = models.DateTimeField(auto_now_add = True) #博客日期
  8. content = models.TextField(blank = True, null = True) #博客文章正文
  9. #获取URL并转换成url的表示格式
  10. def get_absolute_url(self):
  11. path = reverse('detail', kwargs={'id':self.id})
  12. return "http://127.0.0.1:8000%s" % path
  13. def __str__(self) :
  14. return self.title
  15. class Meta:
  16. ordering = ['-date_time']

然后修改post.html。

现在启动web服务器, 在浏览器中输入http://127.0.0.1:8000/, 看看是不是每个博文页面下都有一个多说评论框了…….