我一直在尝试使用Markdown(2.0.1)&amp ;;在我的简单Django(1.1)测试应用程序中使用语法高亮显示工作。 Pygments(1.0)。我们的想法是从用户输入生成HTML,这些输入采用markdown格式并存储在DB中,因此我不必在获取期间对html转换进行降价。
到目前为止,我的降价处理工作正常,但我似乎无法使语法高亮显示工作。我的models.py看起来像这样:
from django.db import models
from django.contrib import admin
from markdown import markdown
class BlogPost( models.Model ):
title = models.CharField( max_length = 150 )
body = models.TextField()
body_html = models.TextField(editable=False, blank=True, null=True)
timestamp = models.DateTimeField()
def save(self):
self.body_html = markdown(self.body, ['codehilite'])
super( BlogPost, self).save()
class Meta:
ordering = ( '-timestamp', )
class BlogPostAdmin( admin.ModelAdmin ):
list_display = ( 'title', 'timestamp' )
admin.site.register(BlogPost, BlogPostAdmin)
到目前为止只测试markdown语法有效,但如果我尝试类似下面的内容,我没有在输出或输出源中看到任何语法高亮:
:::python
from foo import bar
foobar = bar('foo')
我希望在输出源中至少看到一组代码元素。
答案 0 :(得分:3)
修正了它!代码应该缩进四个空格而不是三个!
我在提出问题之前进行了多次编辑以测试它,但似乎Firefox将页面缓存为用作测试帖子。因为我一直在使用Windows键盘快捷键来强制页面重新加载而不是mac键盘快捷键,噢噢!
我发现当我在四个空格缩进的挫折中做了一个新的测试帖并且然后检查了页面源时,它正在工作。
答案 1 :(得分:1)
最好以markdown格式将其存储在数据库中,然后在显示时将其转换为您想要的表示格式(HTML)。这样您就可以像在第一时间添加数据一样编辑数据。
在模板的顶部,您应该包含:
{% load markup %}
然后使用模板过滤器降价。
{{ blog_post.body|markdown}}
然后使用css确保您拥有正确的格式。
如果您没有install the markdown package,还需要For more information see this page。
在你的INSTALLED_APPS的settings.py中,你应该包含'django.contrib.markup'
至于为什么看不到格式,请检查标记的源并确保它正常工作。即确保它正确标记。然后确保您拥有所需的样式表。
Markdown格式是标记之前的格式。
您还可以使用{{3}}向已标记的元素添加类,这样您就可以设置降价文本的样式,而不会影响页面的其余部分。