如何在Django中向博客添加自定义HTML元素和图像?

时间:2019-06-22 08:28:11

标签: python django

我正在尝试在Django中创建博客。可用的大多数教程和示例仅显示了从数据库中检索某些内容并将其动态显示在预定义的HTML结构上。

在查看了一些解决方案之后,我在Django中发现了一个称为Flatpages的东西,它提供了编写HTML的功能。但建议将其用于“关于我们”和“与我们联系”这类页面。我应该使用这个吗?

我想这样做,因为我可以为每个博客编写自己的HTML数据并添加一些图像,以使HTML的结构在每个博客中不应该相似。

例如,在WordPress的情况下,它允许用户完全写博客的每个部分(标题部分除外),并且HTML的结构并非总是恒定不变的。

我想要这样的功能。请帮忙。

3 个答案:

答案 0 :(得分:0)

您是否尝试过使用静态目录?它存储静态内容,如CSS,图像等。创建静态并将其与settings.py文件中的BASE_DIR合并。这里给出完整的解释。 https://docs.djangoproject.com/en/2.2/howto/static-files/

答案 1 :(得分:0)

您要查找的是上传图像并将其作为html嵌入到您的内容字段中。这可以使用WYSIWYG编辑器(例如CKEditor)来完成。在CK中,您可以编写文本,设置其格式并上传文件。您可以使用django-ckeditor为您完成繁重的工作:https://github.com/django-ckeditor/django-ckeditor

然后,您必须在模板中使用安全过滤器呈现内容,以便将内容呈现为html:

    {{ post.content |safe }}

答案 2 :(得分:0)

已经有很多软件包可以做到这一点。您可以参考Django Packages并选择最适合您的需求。

Mezzanine是最常见的一种。我个人没有使用过。
我曾经在以前的一项工作中使用过Django-cms。它非常强大,但是我个人不太喜欢它。

如果您想创建自己的CMS,则可以使用

这样的非常基本的结构
class BlogImage(models.Model):
    image = models.ImageField()
    alt_text = models.CharField(max_length=128)

class BlogPost(models.Model):
    title = models.CharField(max_length=512)
    content = models.TextField()  # be sure to validate that this does not contain bad code
    tags = models.ManyToMany(Tag)

为用户提供所见即所得的编辑器,例如CKEditor。如果用户要包括图像,则只需使用URL。如果他们要上传,请给他们一个模式页面或其他页面来上传图片,并将指向该图片的链接复制到HTML标记中