我一直试图让语法高亮使用降价(2.0.1)和Pygments来做(1.0),我简单的Django(1.1)测试应用程序的工作。我们的想法是,以从用户的输入,对降价格式HTML,并且都存储在数据库中,所以我没有在取做降价到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)

到目前为止测试只是降价语法工程,但如果我尝试像我没有看到任何语法输出或输出源突出以下内容:

   :::python
   from foo import bar
   foobar = bar('foo')

我希望看到至少一组代码元素中的输出源。

有帮助吗?

解决方案

固定它!该代码应被缩进四个空格不是三个!

我做了多次编辑问这个问题之前,测试出来,但它似乎Firefox的缓存页面使用的后期测试。正如我一直在使用Windows键盘快捷键来强制页面重载不是MAC键盘快捷键了,德哦!

我发现这是工作时,我提出了一个新的测试后出于无奈具有四个空间缩进,然后检查网页的源。

其他提示

这是更好地将其存储在降价格式的数据库,然后将其转换为在显示时,你想呈现的格式(HTML)。您可以编辑您的数据相同的方式,这样你在第一时间加入它。

在模板的顶部,你应该包括:

{% load markup %}

然后,使用该模板滤波器降价。

{{ blog_post.body|markdown}}

然后,只需使用CSS来确保你有适当的格式。

您还需要安装降价包如果你不这样做有它这里。

和在你的INSTALLED_APPS你的settings.py你应该包括 'django.contrib.markup'

更多信息请参阅本页

至于为什么你没有看到格式化,检查标记的源文件,确保其工作正常。即确保它被正确标记了。然后请确保您有需要的样式表。

标记符格式是格式它被标记之前。

您也可以使用 JQuery的一类添加到标记的元素,所以你可以风格降价文本在不影响页面的其余部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top