|
1 | 1 | import markdown
|
2 | 2 |
|
| 3 | +from markdown.extensions.toc import TocExtension |
| 4 | + |
3 | 5 | from django.shortcuts import render, get_object_or_404
|
4 | 6 | from django.views.generic import ListView, DetailView
|
| 7 | +from django.utils.text import slugify |
| 8 | + |
5 | 9 | from comments.forms import CommentForm
|
6 | 10 | from .models import Post, Category, Tag
|
7 | 11 |
|
@@ -227,12 +231,13 @@ def get(self, request, *args, **kwargs):
|
227 | 231 | def get_object(self, queryset=None):
|
228 | 232 | # 覆写 get_object 方法的目的是因为需要对 post 的 body 值进行渲染
|
229 | 233 | post = super(PostDetailView, self).get_object(queryset=None)
|
230 |
| - post.body = markdown.markdown(post.body, |
231 |
| - extensions=[ |
232 |
| - 'markdown.extensions.extra', |
233 |
| - 'markdown.extensions.codehilite', |
234 |
| - 'markdown.extensions.toc', |
235 |
| - ]) |
| 234 | + md = markdown.Markdown(extensions=[ |
| 235 | + 'markdown.extensions.extra', |
| 236 | + 'markdown.extensions.codehilite', |
| 237 | + TocExtension(slugify=slugify), |
| 238 | + ]) |
| 239 | + post.body = md.convert(post.body) |
| 240 | + post.toc = md.toc |
236 | 241 | return post
|
237 | 242 |
|
238 | 243 | def get_context_data(self, **kwargs):
|
|
0 commit comments