Django個人サイトにMarkdown編集機能を追加

10168 ワード

Django個人サイトにMarkdown編集機能を追加
Markdownは本当にいいものですね.
Markdownはテキスト言語で、それを使って書いたもので、簡単ではっきりしたスタイルを持っています.textをhtmlまたはxhtmlに変換できます.htmlに比べて文法が簡単で、基本的に簡単なドキュメントを書けば手に入ることができます.
markdownのインストール
これはmarkdownをhtmlに変換するツールと見なすことができる.markdownテキストをhtml形式でページに表示するには、次のdjango-markdown-deuxが必要です.sudo sudo pip install markdownを実行します.Markdown言語をhtmlに変換するライブラリです.テスト:
cslzy (deploy *) lazy $ python 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from markdown import markdown
>>> test = '''
... #This is a test header
... ##The second line
... table|column
... ----|----
... python|2.7.x
... django|1.9.x
... ##Is this work?
... '''
>>> test
'
#This is a test header
##The second line
table|column
----|----
python|2.7.x
django|1.9.x
##Is this work?
'
>>> markdownText = markdown(test) >>> markdownText u'

This is a test header


The second line


table|column
----|----
python|2.7.x
django|1.9.x


Is this work?

'
>>>

タイトルの変換に成功したのは確かだが、表のサポートはよくないようだ.とりあえずやってみます.
テスト
簡単なページでArticleクラスの結果を返します.
ページ:
<! --show my articles -->

<html>
    <head>
        <title>Show Articlestitle>
        {% load staticfiles %}
        <link rel="stylesheet" href="{% static 'article/css/main.css' %}" type="text/css">
    head>

    <body>
        <h1 align="center">Title: <strong>{{ title }}strong>h1>
        <h5>Category: <strong>{{ category }}strong>h5>
        <h5>Date&Time: <strong>{{ date }}strong>h5>
        <br/>
        <h2>Contenth2>
            <strong>{{ content }}strong>
    body>
html>

バックグラウンド:
def detail(request, args):
    try:
        article_id = int(args)
    except:
        return HttpResponse("Invalid Article Number...")

    article_list = Article.objects.all()
    if article_id not in range(1, len(article_list)+1):
        return HttpResponse("Invalid Article Number...")

    atc = Article.objects.get(id=article_id)
    template = loader.get_template('show_atc.html')
    #return_dict = {'title': atc.title, 'category': atc.category, 'date': atc.date_time, 'content': atc.content}
    return_dict = {'title': atc.title, 'category': atc.category, 'date': atc.date_time, 'content': markdown(atc.content)} #           html
    #return HttpResponse(template.render(return_dict, request)) #       
    return HttpResponse(markdown(atc.content))
{{ content }}を使用すると、変換されたhtml文がページに直接出力されます.
django-markdown-deuxの使用
記事を見つけてdjango-markdown-deuxをインストールして、pip install django-markdown-deuxsettings.pyで追加
INSTALLED_APPS = [
    ...
    'markdown_deux',
    ...
    ]

ページにモジュールを読み込む
{% load markdown_deux_tags %}

...

{{ entry.body|markdown }}


はい、これでいいです.
テスト:ファイルをWebページに表示します.
表を描きます.
table
column
python
2.7.x
django
1.9.x
次のコードを通じて、私はこの文章を書きました.mdファイルをページにロードします.表示はほぼ正常ですが、表に問題があります.
    def detail(request, args):
        # detect if args is well-format

        try:
            article_id = int(args)
        except:
            return HttpResponse("Invalid Article Number...")

        article_list = Article.objects.all()
        if article_id not in range(1, len(article_list)+1):
            return HttpResponse("Invalid Article Number...")

        atc = Article.objects.get(id=article_id)
        template = loader.get_template('show_atc.html')

        # show markdown text
        mfile = open('./../../django-markdown-deux.md', 'r').read()
        atc.content = mfile

        return_dict = {'title': atc.title, 'category': atc.category, 'date': atc.date_time, 'content': atc.content}
        return HttpResponse(template.render(return_dict, request))

先にここに着いて、後でゆっくり最適化します.
リファレンス
django-markdownインストールソースおよびサンプルdjango-markdown document
Djangoでmarkdownを使用する