Django의 Markdown 및 Pygments로 강조 표시됩니다
문제
나는 Markdown (2.0.1) & pygments (1.0)를 사용하여 간단한 django (1.1) 테스트 앱에서 일하는 구문 강조를 받으려고 노력했습니다. 아이디어는 Markdown 형식의 사용자 입력에서 HTML을 생성하고 DB에 둘 다 저장하는 것입니다.
지금까지 Markdown 처리가 작동하지만 구문을 강조 표시 할 수는 없습니다. my 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')
출력 소스에서 적어도 일련의 코드 요소를 볼 것으로 예상됩니다.
해결책
고쳤다! 코드는 3 개가 아닌 4 개의 공간에 들여 졌어야합니다!
질문을하기 전에이를 테스트하기 위해 여러 편집을했지만 Firefox가 테스트 게시물로 사용하는 것으로 페이지를 캐시 한 것 같습니다. Wind
나는 4 개의 공간 들여 쓰기로 좌절감으로 새로운 테스트 게시물을 만들었을 때 그것이 작동하는 것을 발견 한 다음 페이지 소스를 검사했습니다.
다른 팁
데이터베이스를 Markdown 형식으로 저장 한 다음 디스플레이 시간에 원하는 프레젠테이션 형식 (HTML)으로 변환하는 것이 좋습니다. 이렇게하면 처음에 추가 한 것과 같은 방식으로 데이터를 편집 할 수 있습니다.
템플릿 상단에는 다음을 포함해야합니다.
{% load markup %}
그런 다음 템플릿 필터 마크 다운을 사용하십시오.
{{ blog_post.body|markdown}}
그런 다음 CSS를 사용하여 올바른 형식을 갖도록하십시오.
당신도 필요합니다 Markdown 패키지를 설치하십시오 여기에 없다면.
그리고 당신의 settings.py에서 당신의 installed_apps에 당신은 'django.contrib.markup'을 포함시켜야합니다.
형식이 보이지 않는 이유는 마크 업 소스를 확인하고 올바르게 작동하는지 확인하십시오. 즉, 제대로 표시되고 있는지 확인하십시오. 그런 다음 필요한 스타일 시트가 있는지 확인하십시오.
Markdown 형식은 표시되기 전에 형식입니다.
당신은 또한 사용할 수 있습니다 jQuery 표시된 요소에 클래스를 추가하려면 나머지 페이지에 영향을 미치지 않고 Markdown 텍스트를 스타일링 할 수 있습니다.