Django에서 마크 다운을 사용하여 블로그를 작성하는 방법 (Tex도 사용 가능)

개요



django를 사용하여 블로그를 쓰려고 여러가지 모색하고 있었는데, 엄청 간단하게 Qiita와 같이 블로그를 쓰는 방법을 발견했으므로, 그것에 대해 써 갑니다.

Admin에 로그인하면 아래 그림과 같은 텍스트 필드가 나타납니다.


환경



장고 = 2.2.5
python=3.8.2
PC : mac(catalina)

사용할 패키지



이번에는 장고-mdeditor을 사용합니다.

패키지 설치



pip install django-mdeditor

또는

pipenv install django-mdeditor

로 설치합니다.

settings.py 변경



settings.py의 INSTALLED_APPS'mdeditor'를 추가합니다.
INSTALLED_APPS = [
        ...
        'mdeditor',
    ]

django3 이상을 사용하는 경우 프레임 설정을 추가합니다.
X_FRAME_OPTIONS = 'SAMEORIGIN' 

mediaURL을 추가하지 않은 경우 추가합니다.
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

urls.py 설정



urlpatterns에 미디어를 추가합니다.

from django.conf.urls import url, include
from django.conf.urls.static import static
from django.conf import settings
...

urlpatterns = [
    ...
]

if settings.DEBUG:
    # static files (images, css, javascript, etc.)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

모델 만들기



그런 다음 간단한 모델을 만듭니다.
from django.db import models
from mdeditor.fields import MDTextField

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = MDTextField()

    def __str__(self):
        return self.title

작성한 후 python manage.py makemigrationspython manage.py migrate를 순서대로 실행하십시오.
이것으로 모델 작성이 완료됩니다.

Admin에 로그인하면 아래 그림과 같은 텍스트 필드가 나타납니다.


양식으로 표시하는 경우



앱의 form.py에 다음과 같은 form을 만듭니다.

app-name/forms.py

class MDEditorModleForm (forms.ModelForm):

    class Meta:
        model = Article
        fields = '__all__'

마지막으로 템플릿 파일로 다음을 추가합니다.

{% load static%}
<! DOCTYPE html>
<html lang = "en">
    <head>
        <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" />

    </ head>
    <body>
        <form method = "post" action = "./">
            {% csrf_token%}
            {{form.media}}
            {{form.as_p}}
            <p> <input type = "submit" value = "post"> </ p>
        </ form>
    </ body>
</ html>

이제 웹에서도 비슷한 텍스트 필드를 볼 수 있습니다.

툴바 변경



다음을 settings.py에 추가하여 툴바를 변경할 수 있습니다.
MDEDITOR_CONFIGS = {
    'default':{
        'width': '90% ',  # Custom edit box width
        'heigth': 500,  # Custom edit box height
        'toolbar': ["undo", "redo", "|",
                    "bold", "del", "italic", "quote", "ucwords", "uppercase", "lowercase", "|",
                    "h1", "h2", "h3", "h5", "h6", "|",
                    "list-ul", "list-ol", "hr", "|",
                    "link", "reference-link", "image", "code", "preformatted-text", "code-block", "table", "datetime"
                    "emoji", "html-entities", "pagebreak", "goto-line", "|",
                    "help", "info",
                    "||", "preview", "watch", "fullscreen"],  # custom edit box toolbar 
        'upload_image_formats': ["jpg", "jpeg", "gif", "png", "bmp", "webp"],  # image upload format type
        'image_folder': 'editor',  # image save the folder name
        'theme': 'default',  # edit box theme, dark / default
        'preview_theme': 'default',  # Preview area theme, dark / default
        'editor_theme': 'default',  # edit area theme, pastel-on-dark / default
        'toolbar_autofixed': True,  # Whether the toolbar capitals
        'search_replace': True,  # Whether to open the search for replacement
        'emoji': True,  # whether to open the expression function
        'tex': True,  # whether to open the tex chart function
        'flow_chart': True,  # whether to open the flow chart function
        'sequence': True, # Whether to open the sequence diagram function
        'watch': True,  # Live preview
        'lineWrapping': False,  # lineWrapping
        'lineNumbers': False  # lineNumbers
    }

}

참고


  • htps : // 기주 b. 이 m / py x x / d chango m에서 ぢ와 r
  • htps // 유키. rld / d changoma rk w w- mp m t /
  • 좋은 웹페이지 즐겨찾기