문제

Python 웹 응용 프로그램을 프로그래밍하면 사용자가 가벼운 마크 업 언어로 텍스트를 입력 할 수있는 텍스트 영역을 만들고 싶습니다. 텍스트는 HTML 템플릿으로 가져와 페이지에서 볼 수 있습니다. 오늘 저는이 명령을 사용하여 TextArea를 만들므로 사용자가 html (html) 텍스트를 입력 할 수 있습니다.

my_text = cgidata.getvalue('my_text', 'default_text')
ftable.AddRow([Label(_('Enter your text')),
               TextArea('my_text', my_text, rows=8, cols=60).Format()])

일부 (안전하고 결국 가벼운) 마크 업만 허용되도록 어떻게 변경할 수 있습니까? 소독제를 포함한 모든 제안은 파이썬과 쉽게 통합되는 한 환영합니다.

도움이 되었습니까?

해결책

파이썬을 사용하십시오 가격 인하 구현

import markdown
mode = "remove" # or "replace" or "escape"
md = markdown.Markdown(safe_mode=mode)
html = md.convert(text)

매우 유연하고 다양한 확장을 사용하고 직접 등을 만들 수 있습니다.

다른 팁

당신은 사용할 수 있습니다 구조 조정 된 텍스트 . 소독 옵션이 있는지 확실하지 않지만 파이썬에서 잘 지원되며 모든 종류의 형식을 생성합니다.

이 간단한 소독 기능은 화이트리스트를 사용하며 솔루션과 거의 동일합니다. Python-HTML-Sanitizer-Scrubber-Filter, 또한 속성의 사용을 제한 할 수 있습니다 (아마도 누군가가 누군가를 사용하기를 원하지 않기 때문에 style 기인하다):

from BeautifulSoup import BeautifulSoup

def sanitize_html(value):
    valid_tags = 'p i b strong a pre br'.split()
    valid_attrs = 'href src'.split()
    soup = BeautifulSoup(value)
    for tag in soup.findAll(True):
        if tag.name not in valid_tags:
            tag.hidden = True
        tag.attrs = [(attr, val) for attr, val in tag.attrs if attr in valid_attrs]
    return soup.renderContents().decode('utf8').replace('javascript:', '')
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top