[英]How to Embed Code and Images in a Blog Post
我正在嘗試通過創建個人博客來自學Django。 目前,我的模型中有一個Post類,該類將正文存儲為TextField
。 如同
class Post(models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
author = models.ForeignKey(Author, related_name='blog_posts')
published = models.DateTimeField(default=timezone.now)
slut = models.SlugField(max_length=100, unique_for_date='publish')
哪個可以完成我想要的90%。
我想做的是在帖子正文中包含非文本的內容。 特別是圖像和代碼片段。
我該如何實現? 我可以使用一種數據類型嗎? 還是其他方式?
您可以將富文本編輯器集成到Django中(包括Django admin)。 我會推薦CKEditor,因為它很不錯,但是還有很多。
向您的帖子添加圖像的最簡單方法是將它們上傳到其他位置(例如imgur),然后使用您選擇的富文本編輯器將它們直接內嵌到您的帖子中。
如果要允許在Django中上傳圖片,最簡單的方法是創建另一個可以關聯到帖子的模型,例如
class Image(models.Model):
image = ImageField()
post = models.ForeignKey('yourapp.Post')
並使用內聯管理員公開此內容(文檔對此進行了詳細說明)。
然后,在模板中,您可以遍歷圖像:
{% for image in post.image_set.all %}
<img src="{{ image.image.url }}" />
{% endfor %}
當然,這意味着圖像與您的帖子的文本內容不內聯-它們只會在帖子之前/之后吐出來。
添加功能以在Django中上傳圖像並將其嵌入到內嵌中超出了本次討論的范圍,因為必須做出一些設計決策。
我用django-summernote很好。
有一個不好的解決方案,那就是在模板中使用safe
過濾器,該過濾器會停用HTML轉義:
{{ code | safe }}
但這是一個壞習慣,因為:
值得知道的是它存在,但我建議您不要使用它
...將使用一些django-markdown程序包,該程序包將解釋markdown代碼並將其轉換為安全的 HTML代碼。
原因如下:
safe
過濾器一樣簡單(它可能類似於{{ code | markdown }}
)。 django-markdown2
和django-markdownx
都可以滿足您的需求,但是如果您不能隨意嘗試另一種的話!
您不必費心找到一個支持圖像或代碼段的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.