2017-09-14 53 views
0

我試圖通過使用數組分割它在Django很長的字符串,但我成功地做了django-markdown-deux 停止工作。Django 1.11分頁Markdown

這裏是我是如何實現它: models.py:

class Post(models.Model): 
content = models.TextField() 

def get_markdown(self): 
    content = self.content 
    markdown_text = markdown(content) 
    return mark_safe(markdown_text) 

views.py:

def post_detail(request, slug=None): #retrieve 
instance = get_object_or_404(Post, slug=slug) 

#Detect the breaklines from DB and split the paragraphs using it 
tempInstance = instance.content 
PaginatedInstance = tempInstance.split("\r\n\r\n") 

paginator = Paginator(PaginatedInstance, 5) #set how many paragraph to show per page 

page = request.GET.get('page', 1) 

try: 
    Paginated = paginator.page(page) 
except PageNotAnInteger: 
    Paginated = paginator.page(1) 
except EmptyPage: 
    Paginated = paginator.page(paginator.num_pages) 

context = { 
    "instance": instance, 
    "Paginated": Paginated, #will use this to display the story instead of instance (divided string by paragraph) 
} 

return render(request, "post_detail.html", context) 

post_detail.html:

這是工作的一個(不分頁):

{{ instance.get_markdown }} 

這一個工程作爲純文本如果刪除.get_markdown,如果我把.get_markdown

{% for paginatedText in Paginated %} 
{{ paginatedText.get_markdown }} 
{% endfor %} 

回答

0

paginatedText實例沒有定義的get_markdown方法不會顯示任何內容。因此,當您嘗試調用模板時,模板會自動失敗。您將需要使用markdownfilter代替:

{% load markdown_deux_tags %} 

{% for paginatedText in Paginated %} 
{{ paginatedText|markdown }} 
{% endfor %} 
+0

它的工作但有次說,我插入使用降價形式的影像時,不會顯示。 –

+0

每當我添加一個圖像,降價形式將生成此代碼:'![enter image description here] [1]'在我想要圖像顯示的位置,並且這個: '[1]:link- image.com \ image.png'在內容的最後部分,除非我將''旁邊的'[1]:link-to-image.com \ image.png'複製出來,否則這些內容將不起作用![enter image description here] [1]' –

+0

對。 Pagninator不是Markdown意識到的。它假設一個更簡單的純文本。您或者需要以分頁程序無法打破的方式格式化Markdown,或者使用更復雜的分頁程序。就個人而言,我建議將Markdown轉換爲HTML作爲整個文檔,然後對HTML進行分頁。但是,這超出了這個問題的範圍。 – Waylan