python - Django ORM对数据库中的数据在读取时进行处理该如何实践?
PHP中文网
PHP中文网 2017-04-17 17:10:16
[Python讨论组]

场景:
我想存储评论的文本,保存简单的文本格式,换行什么的。
比如用户的评论数据为"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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
黄舟

两个比较好的地方

  1. models 的 save method

  2. template filter

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

多看文档

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号