Как реализовать уценку в приложении Django 1.6?
У меня есть текстовое поле в models.py
, где я могу вводить текстовый контент для блога с помощью администратора.
Я хочу, чтобы иметь возможность писать контент для этого текстового поля в формате разметки, но я использую Django 1.6 и django.contrib.markup
больше не поддерживается.
Я не могу найти нигде, где есть учебник, и запускает добавление уценки в текстовое поле в Django 1.6. Может кто-то посмотреть мои файлы .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>
Ответы
Ответ 1
Спасибо за ваши ответы и предложения, но я решил использовать 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>
Ответ 2
А, я встретился с той же проблемой несколько месяцев назад, и я нашел, что самым простым и надежным решением является использование Github Markdown API.
Вот код, который я использую для своего блога, который, я считаю, поможет вам более или менее. btw Я использую 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, вы можете найти его здесь
И мой блог http://laike9m.com.
Ответ 3
Вы можете использовать замену старой разметки, реализованной здесь - https://github.com/jamesturk/django-markupfield