본문 바로가기

[Python] django 마크다운 설치

액트 2022. 12. 8.
반응형

마크다운(markdown)은 마크업(markup)에서 나온 말로, 일반 텍스트 문서의 양식을 편집하는 문법입니다. README 파일이나 온라인 문서, 혹은 일반 텍스트 편집기로 문서 양식을 편집할 때 사용합니다. 예를 들어 링크를 넣거나 글씨를 굵게 표시한다던가의 기능을 사용할 수 있습니다. 마크다운을 이용해 작성된 문서는 쉽게 HTML 등 다른 문서 형태로 변형이 가능합니다. 

마크다운을 이용해 문서를 작성하려면 마크다운 문법에 대해 알아야 합니다.

마크다운 문법은 아래 사이트를 참고하시면 도움이 됩니다.

 

마크다운(Markdown) 사용법

마크다운(Markdown) 사용법. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

 

마크다운 설치

파이썬의 pip 명령어로 마크다운을 설치합니다.

pip install markdown

(myvenv) c:\projects\mysite> pip install markdown
Collecting markdown
  Downloading Markdown-3.4.1-py3-none-any.whl (93 kB)
     ---------------------------------------- 93.3/93.3 kB 2.7 MB/s eta 0:00:00
Collecting importlib-metadata>=4.4
  Downloading importlib_metadata-5.1.0-py3-none-any.whl (21 kB)
Collecting zipp>=0.5
  Downloading zipp-3.11.0-py3-none-any.whl (6.6 kB)
Installing collected packages: zipp, importlib-metadata, markdown
Successfully installed importlib-metadata-5.1.0 markdown-3.4.1 zipp-3.11.0

만약 pip 명령어가 오류가 난다면 pip를 설치해줘야 합니다. 그러나 장고를 설치했다면 당연히 pip가 있을 것입니다.

 

마크다운 필터 등록

마크다운 문법을 이용하여 작성한 문서를 HTML 문서로 변환하려면 템플릿에서 사용할 마크다운 필터를 작성해야 합니다. 이전에 sub 필터를 작성했던 pybo_filter.py 파일에 다음과 같이 mark 필터를 추가합니다.

파일 경로: mysite\pybo\templatetags\pybo_filter.py

import markdown
from django import template
from django.utils.safestring import mark_safe

register = template.Library()


@register.filter
def sub(value, arg):
    return value - arg


@register.filter
def mark(value):
    extensions = ["nl2br", "fenced_code"]
    return mark_safe(markdown.markdown(value, extensions=extensions))

mark 함수는 markdown 모듈과 mark_safe 함수를 이용하여 입력 문자열을 HTML로 변환하는 필터 함수입니다.

"nl2br", "fenced_code"는 마크다운의 확장 기능입니다. nl2br은 줄바꿈 문자를 <br>로 바꾸어줍니다. fenced_code는 마크다운의 소스코드를 표현해줍니다. 

 

마크다운 적용

질문 상세 페이지에 {% load pybo_filter %} 태그를 추가하고 마크다운 필더를 적용합니다.

경로: mysite\templates\pybo\question_detail.html

상단에 아래 구문 추가

{% load pybo_filter %}

기존 줄 바꿈을 표시가기 위해 사용했던 기존의

style="white-space: pre-line;"

을 삭제합니다. 질문 부분과 답변 부분 두 군데 존재합니다.

삭제한 다음 아래와 같이 mark를 추가합니다.

<div class="card-text">{{ question.content|mark }}</div>
<div class="card-text">{{ answer.content|mark }}</div>

 

마크다운 확인

이제 질문 또는 답변을 마크다운 문법으로 작성하고 확인합니다.

아래와 같이 작성합니다.

**마크다운 문법으로 작성해 봅니다.**

* 리스트1
* 리스트2
* 리스트3

파이썬 홈페이지는 [http://www.python.org](http://www.python.org) 입니다.

그리고 저장하고 확인하면 아래와 같이 확인하실 수 있습니다.

 

 

해당 글은 wikidocs의 점프투장고 글을 보고 공부한 내용입니다.

반응형

댓글