2014-04-12 15 views
13

models.py numaralı telefondan, bir blogu yönetici kullanarak metin içeriğine girebileceğim bir metin alanım var.Django 1.6 uygulamasında nasıl işaretleme uygularım?

Bu metin alanı için içeriği işaretleme biçiminde yazabilmek istiyorum, ancak Django 1.6 kullanıyorum ve django.contrib.markup artık desteklenmiyor.

Bir öğretici içeren ve Django 1.6'daki bir metin alanına işaretleme ekleyerek çalıştırılan hiçbir yer bulamıyorum. Birisi benim .py dosyalarına bakabilir ve uygulamanıza işaretleme uygulamasında bana yardımcı olabilir.

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) 

<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> 
+0

Eğer Django 1.7 ile kullanmak ne bir tavsiyen var mı? – Ajoy

cevap

21

Yanıtlarınız ve önerileriniz için teşekkür ederiz, ancak markdown-deux'u kullanmaya karar verdim.

İşte öyle yapmıştım:

pip install django-markdown-deux

Sonra benim gereksinimleri dosya güncellendi emin olmak için pip freeze > requirements.txt yaptı.

INSTALLED_APPS = (
    ... 
    'markdown_deux', 
    ... 
) 

Sonra benim şablon index.html değişti:

Sonra INSTALLED_APPS listesine 'markdown_deux' eklendi

{% 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> 
+0

Bunu çözdüğünüze sevindim, ancak github API'sini gerçekten denemelisiniz, en azından işaretlemeden çok daha iyi. Markdown_deux'u denemedim belki de iyi bir seçim. – laike9m

+1

@ laike9m Veritabanına kaydettiğinizde bir kez oluşturuyorsanız, API'yi kullanmanın iyi olacağını düşünün. Bunu şablon etiketinin yerine kullanırsanız (birçok insan markdown'u nasıl kullandığını düşündüğümde) o zaman karmaşıklaşır. –

+0

@JordanReiter Elbette – laike9m

3

Ah Ile tanıştım Aynı problem birkaç ay önce ve en kolay ve en sağlam çözümün Github Markdown API'u kullanması olduğunu buldum.

İşte size daha fazla veya daha az yardımcı olacağına inandığım bloğum için kullanacağım kod. btw Python 3 öylesine kodlama bölümü Python 2.

Kodum github üzerinde barındırılan
# 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() 

farklı olabilir kullanmak, bunu here
Ve Blogum http://laike9m.com olduğunu bulabilirsiniz.

İlgili konular