如何在Django 1.6应用程序中实现markdown?

Dav*_*dow 16 python django markdown django-models django-admin

我有一个文本字段models.py,我可以使用管理员为博客输入文本内容.

我希望能够以markdown格式编写此文本字段的内容,但我正在使用Django 1.6并且django.contrib.markup不再受支持.

我找不到任何有教程的地方,并在Django 1.6的文本字段中添加markdown.有人可以查看我的.py文件,并帮助我实现我的应用程序的降价.

models.py

from django.db import models

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField()
    text = models.TextField()
    tags = models.CharField(max_length=80, blank=True)
    published = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)

admin.py

from django.contrib import admin
from blogengine.models import Post

class PostAdmin(admin.ModelAdmin):
    # fields display on change list
    list_display = ['title', 'text']
    # fields to filter the change list with
    save_on_top = True
    # fields to search in change list
    search_fields = ['title', 'text']
    # enable the date drill down on change list
    date_hierarchy = 'pub_date'

admin.site.register(Post, PostAdmin)
Run Code Online (Sandbox Code Playgroud)

的index.html

<html>
    <head>
        <title>My Django Blog</title>
    </head>
    <body>
        {% for post in post %}
        <h1>{{ post.title }}</h1>
        <h3>{{ post.pub_date }}</h3>
        {{ post.text }}
        {{ post.tags }}
        {% endfor %}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Dav*_*dow 24

感谢您的回答和建议,但我决定使用markdown-deux.

我是这样做的:

pip install django-markdown-deux

然后我pip freeze > requirements.txt确保我的需求文件已更新.

然后我将'markdown_deux'添加到INSTALLED_APPS列表中:

INSTALLED_APPS = (
    ...
    'markdown_deux',
    ...
)
Run Code Online (Sandbox Code Playgroud)

然后我将模板更改index.html为:

{% load markdown_deux_tags %}

<html>
    <head>
        <title>My Django Blog</title>
    </head>
    <body>
        {% for post in post %}
        <h1>{{ post.title }}</h1>
        <h3>{{ post.pub_date }}</h3>
        {{ post.text|markdown }}
        {{ post.tags }}
        {% endfor %}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)


lai*_*e9m 7

啊,几个月前我遇到了同样的问题,我发现最简单和最强大的解决方案是使用Github Markdown API

这是我用于我的博客的代码,我相信它或多或少会对您有所帮助。顺便说一句,我使用 Python 3,因此编码部分可能与 Python 2 不同。

# generate rendered html file with same name as md
headers = {'Content-Type': 'text/plain'}
if type(self.body) == bytes:  # sometimes body is str sometimes bytes...
    data = self.body
elif type(self.body) == str:
    data = self.body.encode('utf-8')
else:
    print("somthing is wrong")

r = requests.post('https://api.github.com/markdown/raw', headers=headers, data=data)
# avoid recursive invoke
self.html_file.save(self.title+'.html', ContentFile(r.text.encode('utf-8')), save=False)
self.html_file.close()
Run Code Online (Sandbox Code Playgroud)

我的代码托管在 github 上,你可以在这里找到它
,我的博客是http://laike9m.com