Подсветка синтаксиса с помощью Markdown & amp; Пигменты в Джанго
Вопрос
Я пытался заставить работать подсветку синтаксиса в моем простом тестовом приложении Django (1.1) с использованием Markdown (2.0.1) & amp; Фрагменты (1.0). Идея состоит в том, чтобы сгенерировать 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, чтобы убедиться, что вы правильно отформатировали.
Вам также необходимо установить пакет уценки , если вы этого не сделаете есть здесь.
И в вашем settings.py в ваших INSTALLED_APPS вы должны включить 'django.contrib.markup'
Для получения дополнительной информации см. эту страницу .
Что касается того, почему вы не видите форматирование, проверьте размеченный источник и убедитесь, что он работает правильно. Т.е. убедитесь, что он размечается правильно. Затем убедитесь, что у вас есть необходимые таблицы стилей. Р>
Формат уценки - это формат перед разметкой. Р>
Вы также можете использовать JQuery , чтобы добавить класс к размеченным элементам, чтобы вы могли стилизовать текст уценки не влияя на остальную часть страницы. Р>