我一直在尝试使用Markdown (2.0.1) & Pygments (1.0)在我的简单Django (1.1)测试应用程序中实现语法突出显示。这个想法是从用户输入生成HTML,这是markdown格式的,并将两者都存储在DB中,这样我就不必在抓取过程中进行markdown到html的转换。
到目前为止,我已经让markdown处理工作了,但是我似乎不能让语法突出显示工作。我的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')我希望在输出源代码中至少能看到一组代码元素。
发布于 2009-08-04 02:07:21
修好了!代码应该缩进四个空格,而不是三个空格!
在问问题之前,我做了多次编辑来测试这个问题,但似乎Firefox缓存了该页面作为测试帖子。因为我一直使用windows键盘快捷键来强制页面重新加载,而不是mac键盘快捷键,哦!
当我出于对四个空格缩进的失望而制作了一个新的测试帖子时,我发现它正在工作,然后检查了页面源代码。
发布于 2009-08-04 01:43:57
最好以markdown格式将其存储在数据库中,然后在显示时将其转换为所需的表示格式(HTML)。这样,您就可以按照最初添加数据的方式编辑数据。
在模板的顶部,您应该包括:
{% load markup %}然后使用模板过滤器标记。
{{ blog_post.body|markdown}}然后只需使用css来确保您有正确的格式。
如果你在这里没有,你也需要install the markdown package。
在INSTALLED_APPS的settings.py中,应该包含'django.contrib.markup‘
For more information see this page。
至于为什么你看不到格式,请检查标记的源代码,并确保它工作正常。也就是说,确保它被正确标记。然后确保您拥有所需的样式表。
Markdown格式是在标记之前的格式。
还可以使用JQuery向标记的元素添加类,这样就可以在不影响页面其余部分的情况下设置标记文本的样式。
https://stackoverflow.com/questions/1225386
复制相似问题