【问题标题】:How to escape symbols entered in django admin to html representation如何将 django admin 中输入的符号转义为 html 表示
【发布时间】:2018-07-09 23:38:10
【问题描述】:

我有一个具有常规文本字段的模型,它需要能够接受用户粘贴的文本数据,其中可能包含科学符号,特别是小写 delta δ。用户将通过模型管理员输入数据。

我使用的是 mysql 后端,并且编码设置为 Latin-1。更改数据库编码不是我的选择。

为了简单起见,我想做的是让管理表单清理输入文本,就像卫生或验证一样,但是要将 δ 等字符转义为它们的 HTML 表示,以便我可以存储它们在数据库中,而不必转换为 Unicode 然后再返回。

有哪些实用程序可以执行此操作?我看过escape()conditional_escape(),但它们似乎并没有按照我的意愿去做(不转义特殊字符),django.utils.encoding.force_text() 将对所有内容进行编码,但我的数据将呈现为其 Unicode 表示如果我这样做。

该网站在 django 1.10 和 python 2.7.x 上运行

非常感谢任何帮助或想法。

【问题讨论】:

    标签: python mysql django character-encoding django-admin


    【解决方案1】:

    作为接收 request.POST 数据的 save 方法或视图的一部分,您可以对其进行转义,使用 xmlcharrefreplace 将其编码为 ascii,然后将其从字节解码回字符串:

    raw_str = "this is a string with δ problematic chars"
    result = html.escape(raw_str).encode("ascii", "xmlcharrefreplace").decode()
    print(result) # 'this is a string with δ problematic chars'
    

    由于您无法更改编码,因此可以完成工作,尽管不像刚开始使用 UTF-8 那样干净。祝你好运!

    【讨论】:

    • 你肯定不需要做任何编码/解码??为什么POST 返回 δ而不是 UTF-8 字符??
    猜你喜欢
    • 2011-03-25
    • 2021-12-11
    • 1970-01-01
    • 2013-08-04
    • 2018-05-10
    • 2013-05-05
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多