我正在尝试通过创建个人博客来教自己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%。
我希望能够做的是,包括帖子正文中不是文本的内容。特别是图像和代码片段。
我怎样才能实现这一目标?我可以使用哪种数据类型?或者其他一些方式?
答案 0 :(得分:2)
您可以将富文本编辑器集成到Django中(包括Django admin)。我推荐CKEditor,因为它很好,但那里有很多。
向帖子添加图片的最简单方法是将其上传到其他地方(例如imgur),然后使用您选择的富文本编辑器将其嵌入到帖子中。
如果您想在Django中允许图片上传,最简单的方法是创建另一个可以与帖子关联的模型,例如
For i = 1 To 20
Dim p = new Panel()
Dim lab = New Label()
lab.Text = "label" & i
Dim TextBoxes As New TextBox
TextBoxes.ID = "RS" & i
TextBoxes.Text = Slot.Rows(0)(Ri).ToString()
TextBoxes.Attributes.Add("class", "slotFields")
p.Controls.Add(lab)
p.Controls.Add(TextBoxes)
PlaceHolder.Controls.Add(p)
Next
使用内联管理员公开此内容(文档详细说明了这一点)。
然后在您的模板中,您可以迭代图像:
class Image(models.Model):
image = ImageField()
post = models.ForeignKey('yourapp.Post')
这当然意味着图片并不符合您帖子的文字内容 - 他们只会在帖子之前/之后吐出来。
添加在Django中上传图像并将其嵌入内联的功能超出了本次会话的范围,因为必须做出一些设计决定。
答案 1 :(得分:1)
我使用django-summernote这很好。
答案 2 :(得分:1)
在您的模板中使用safe
过滤器有一个糟糕的解决方案,此过滤器会停用HTML转义:
{{ code | safe }}
但这是一种不好的做法,因为:
值得知道它存在,但我建议你不要使用
...将使用一些django-markdown包来解释降价代码并将其转换为安全 HTML代码。
原因如下:
safe
过滤器一样简单(它可能类似于{{ code | markdown }}
)。 django-markdown2
和django-markdownx
可能都符合您的需求,但如果它不能自由尝试其他人的话!
找到支持图片或代码段的内容应该不会有问题。