python - 如何将 django admin 中输入的符号转义为 html 表示

标签 python mysql django character-encoding django-admin

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

我使用的是 mysql 后端,编码设置为 Latin-1。更改数据库编码对我来说不是一个选项。

为了简单起见,我想做的是让管理表单删除输入文本,就像清理或验证一样,但要将诸如 δ 之类的字符转义为它们的 HTML 表示形式,这样我就可以将它们存储在数据库中,而不必转换为 Unicode 然后再转换回来。

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

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

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

最佳答案

作为接收 request.POST 数据的保存方法或 View 的一部分,您可以将其转义,使用 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 那样干净。祝你好运!

关于python - 如何将 django admin 中输入的符号转义为 html 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532369/

相关文章:

python - 对 NumPy 数组中的每 x 个数字进行平均

python - 在QTableWidget中,如何确定空单元格是否可编辑?

mysql - 尝试 JOIN 两个派生表时出错

PHP 文本区域到 MySQL 查询变量不返回所有行结果

python - Django - 当文件等于 maxBytes 时旋转文件处理程序卡住

django - 如何使用 Django Postman 建立像 Facebook 这样的后端消息传递系统?

Python - 从函数返回值

python - Django 2.2 不提供静态文件

mysql - 在 phpMyAdmin 中添加表

django - 如何翻译应用程序模板