[英]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.