Django-Markdown

问题

使用markdow渲染保存的文本,实现在HTML中根据markdown格式显示文本内容。同时用pygments实现代码高亮的功能。

这方面网上很多例子,只是稍微有些坑,有可能是版本问题引起的,在我自己实践的时候主要遇到了两个问题:

  1. 使用generic view的时候,如果重写object,使其输出经过markdown格式渲染后的内容;
  2. markdown的其他格式都能正常解析,但是代码格式无法正常解析;
  3. css文件如何正确的引用到html模板中,总是提示css file not found;

解决方案

  1. 可以直接重写generic view中的def get_object(self, queryset=None)
from markdown import markdown
class DetailView(generic.DetailView):
    template_name = 'article/detail.html'
    model = Posts
    def get_object(self, queryset=None):
        posts = super(DetailView, self).get_object(queryset = None)
        posts.content = markdown(posts.content,extensions=[
                                     'markdown.extensions.extra',
                                     'markdown.extensions.codehilite',
                                     'markdown.extensions.toc',
                                  ])
        return posts
  1. 如上面代码显示,除了import markdown之外,还需要船体额外的参数extensions,而其中codehilite就是用于代码高亮的部分。这里如果不添加的话就会出现上述问题。
  2. css文件路径如下:


    static路径

    在APP路径下创建static文件夹,并把css文件放入其中,同时需要修改settings.py文件中的STATICFILES_DIRS属性,将路径添加进去才行。如果是默认路径的话是放在'mysite/static'路径下

实在不行还可以在执行以下

python manage.py collectstatic

这个命令会自动生成project/projectname/static路径,并创建相关的一些css/js/img文件夹

你可能感兴趣的:(Django-Markdown)