Django - 在模型中存储未转义的 html

django

1个回答

写回答

Cfghhj

2025-06-27 21:55

+ 关注

Django
Django

使用Django开发web应用时,经常会遇到需要在模型中存储未转义的HTML的情况。这种需求通常出现在需要将用户输入的富文本内容保存到数据库中,并在网页中显示出来的场景中。本文将介绍如何在Django模型中存储未转义的HTML,并给出一个简单的示例代码。

Django中,可以使用TextField字段来存储未转义的HTML内容。该字段可以保存任意长度的文本数据,并且不会对其进行转义处理。在模型中定义一个TextField字段,用于存储HTML内容,示例如下:

Python

from Django.db import models

class Article(models.Model):

title = models.CharField(max_length=100)

content = models.TextField()

在上面的示例代码中,我们定义了一个Article模型,包含了一个title字段和一个content字段。其中,content字段用于存储未转义的HTML内容。

接下来,我们可以使用模型来创建数据库表,并保存一篇包含HTML内容的文章。示例如下:

Python

article = Article(title='示例文章', content='<h1>这是一个标题</h1>

这是一个段落

')

article.save()

上述代码创建了一篇标题为"示例文章"的文章,并将包含HTML标签的内容保存到数据库中的content字段中。

在网页中显示这篇文章时,可以使用Django的模板系统来渲染HTML内容。在模板文件中,可以直接使用变量来输出未转义的HTML内容,示例如下:

html

<h1>{{ article.title }}</h1>

{{ article.content|safe }}

在上述示例代码中,我们使用{{ article.title }}输出了文章的标题,然后使用{{ article.content|safe }}输出了未转义的HTML内容。通过在模板中使用|safe过滤器,可以告诉Django不对内容进行转义处理。

一下,在Django中存储未转义的HTML内容可以使用TextField字段,渲染HTML内容时需要使用|safe过滤器来输出未转义的内容。

示例代码:

Python

from Django.db import models

class Article(models.Model):

title = models.CharField(max_length=100)

content = models.TextField()

Python

article = Article(title='示例文章', content='<h1>这是一个标题</h1>

<img src="https://img.izhida.com/topic/a7f5f35426b927411fc9231b56382173.jpg" alt="Python"><br>Python

这是一个段落

')

article.save()

html

<h1>{{ article.title }}</h1>

{{ article.content|safe }}

文章分段:

Django开发中,我们经常需要对文章进行分段处理,以提高可读性和用户体验。分段可以通过在HTML中使用合适的标签来实现,比如使用

标签来表示段落。

在上述示例中,我们可以将文章内容按照段落分段显示,示例如下:

html

<h1>{{ article.title }}</h1>

{% for paragraph in article.content.split('

') %}

{% if paragraph %}

{{ paragraph|safe }}

{% endif %}

{% endfor %}

在上述示例代码中,我们使用了{% for %}{% endfor %}标签来遍历文章内容中的每一个段落。然后使用split('

')方法将文章内容按照

标签进行分割,得到一个段落列表。最后,我们使用

标签将每个段落包裹并使用|safe过滤器输出未转义的HTML内容。

通过以上的代码,我们可以将一篇包含多个段落的文章按照段落进行分段显示,增加文章的可读性和用户体验。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号