Tôi đã làm việc để tạo một tiện ích mở rộng đánh dấu python sẽ chèn một thư viện hình ảnh trong dự án django của tôi khi sử dụng thẻ tùy chỉnh. Phần mở rộng thực tế đang hoạt động, nhưng HTML mà phần mở rộng trả về đều được mã hóa. Đây là tiện ích mở rộng mà tôi đang sử dụng:Tắt mã hóa HTML trong đầu ra của phần mở rộng Markdown tùy chỉnh của Python
#!/usr/bin/env python
from django.template.loader import render_to_string
from main.models import *
import markdown
version = "0.1.0"
class GalleriaExtension(markdown.Extension):
def __init__(self, configs):
self.config = {
}
# Override defaults with user settings
for key, value in configs:
self.setConfig(key, value)
def add_inline(self, md, name, klass, re):
pattern = klass(re)
pattern.md = md
pattern.ext = self
md.inlinePatterns.add(name, pattern, "<reference")
def extendMarkdown(self, md, md_globals):
self.add_inline(md, 'galleria', Galleria,
r'\[\[(G|g)allery (?P<superpage_id>\w+)\]\]')
class Galleria(markdown.inlinepatterns.Pattern):
def handleMatch(self, m):
try:
images = SuperPage.objects.get(id=m.group('superpage_id')).superpageimage_set.all()
except:
images = None
if images:
rendered = render_to_string('galleria.html', { 'images': images })
else:
rendered = '<b>There are no images for the given ID</b>'
return rendered
def makeExtension(configs=None) :
return GalleriaExtension(configs=configs)
Tôi đảm bảo rằng render_to_string
thực sự trả lại html không được mã hóa. Từ vỏ đây là một ví dụ về kết quả:
Output từ render_to_string
:
>>> from django.template.loader import render_to_string
>>> images = SuperPage.objects.get(id=8).superpageimage_set.all()
>>> render_to_string('galleria.html', { 'images': images })
u'<div class=\'galleria_std\'>\n <div class=\'gallery\' >\n <div id=\'stage_gallery\' >\n'
Đây là sản lượng từ markdown
phần mở rộng được mã hóa:
>>>markdown.markdown('test [[gallery 8]] test', ['galleria'])
u'<p>test <div class=\'galleria_std\'>\n <div class=\'gallery\' >\n'
Làm thế nào tôi có thể làm cho rendered
trở HTML đánh dấu thay vì đánh dấu mã hóa khi sử dụng phần mở rộng markdown? Ngoài ra, tôi sẽ đánh giá cao bất kỳ con trỏ trên mã hóa này khác nhau (cú pháp, bố trí, vv). Tôi đánh giá cao nó.
Bạn đã tìm thấy giải pháp chưa? –