首页 > Django ORM对数据库中的数据在读取时进行处理该如何实践?

Django ORM对数据库中的数据在读取时进行处理该如何实践?

场景:
我想存储评论的文本,保存简单的文本格式,换行什么的。
比如用户的评论数据为"abc def\n\ndefghijklmn\r\n",我将原数据直接存储,
但是我显示这条数据的时候(在模板中应用的时候,或者其他需要 html 格式返回时),返回这样的数据,进行了处理替换掉换行的符号"abc def<br/>defghijklmn<br/>"

在数据展示的时候再进行处理,是考虑可以方便以后的更改和增加其他自定义标记文本格式的支持(Markdown)。

我希望这样的处理在我写好函数后自动在后台处理,不知道在 Django 框架中那个模块处理比较好,是在表单模块还是在数据模型。

举例:

模型

class Comment(models.Model):
    article = models.ForeignKey(Article)
    name = models.CharField(max_length=32)
    comment = models.CharField(max_length=1024)

处理函数

def handler_comment(str):
    ....
    return str.replace('\n','<br/>')
    

这个处理函数应该是在 django 某个模块后台(默认的某个流程中自动处理)

使用

:comment = r"abc\ndef"
:c = Comment.objects.create(article, name, comment)
:print c.comment
"abc</br>def"
# 在模板中
<p>c.comment</p>
<p>abc<br/>def</p>

当然还要注意数据的安全以防造成 xss


两个比较好的地方

  1. models 的 save method

  2. template filter

另外,对于这个需求 你不需要做任何事情!
你只需要在模板用 filter {{ some_string | linebreaks }}

多看文档

【热门文章】
【热门文章】