Подсветка синтаксиса с помощью Markdown & amp; Пигменты в Джанго

StackOverflow https://stackoverflow.com/questions/1225386

  •  22-07-2019
  •  | 
  •  

Вопрос

Я пытался заставить работать подсветку синтаксиса в моем простом тестовом приложении 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 , чтобы добавить класс к размеченным элементам, чтобы вы могли стилизовать текст уценки не влияя на остальную часть страницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top