Подтвердить что ты не робот

Как реализовать уценку в приложении 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>
4b9b3361

Ответ 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.