如何在Django 1.6应用程序中实现markdown?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Django 1.6应用程序中实现markdown?相关的知识,希望对你有一定的参考价值。
我在models.py
有一个文本字段,我可以使用admin为博客输入文本内容。
我希望能够以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)
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)
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>
感谢您的回答和建议,但我决定使用markdown-deux。
我是这样做的:
pip install django-markdown-deux
然后我做了pip freeze > requirements.txt
以确保我的需求文件已更新。
然后我将'markdown_deux'添加到INSTALLED_APPS列表中:
INSTALLED_APPS = (
...
'markdown_deux',
...
)
然后我将模板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>
啊,几个月前我遇到了同样的问题,我发现最简单,最强大的解决方案是使用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()
我的代码托管在github上,你可以找到它here 我的博客是http://laike9m.com。
您可以使用此处实现的旧标记替换 - https://github.com/jamesturk/django-markupfield
以上是关于如何在Django 1.6应用程序中实现markdown?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 2 中实现 Django-Private-Chat