语法在Django与降价及Pygments来做突出
题
我一直试图让语法高亮使用降价(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的一类添加到标记的元素,所以你可以风格降价文本在不影响页面的其余部分。
不隶属于 StackOverflow