python - 如何混淆 jinja2 中变量中的数据?例如变量 = "John Smith",我想要类似 "Odsv Wgtvs"的东西

标签 python django jinja2

因此,我尝试创建一个页面,其中详细信息仅向登录的用户显示。我可以使用静态更改内容

{% if user.is_authenticated %}

所以我可以用 Dummy Name 替换类似 {{名人.name }} 的内容,但每次出现都是相同的。

我希望有一种简单的方法可以混淆celebrity.name来混淆实际数据。

如果没有简单的方法,我会很乐意编写自己的函数,但此时我不确定是否应该在 html 模板中的 jinja2 中编写它,或者是否应该在views.py 中编写它,所以希望得到一些指导。

最佳答案

您可以编写自己的 custom template filter :

from django import template
register = template.Library()

@register.filter
def obfuscate(value, user):
    if user.is_authenticated():
        return value

    # do something before returning
    return '#SECRET#' + value + '#SECRET#'

这可能是模板中的用户:

{{ celebrity.name|obfuscate:user }}

如果混淆必须是确定性的(相同的值总是产生相同的混淆结果),您可以使用哈希函数(将返回乱码,而不是真实姓名),或用于替换名称的固定字典,或其他东西.

如果替换是不确定的,您可以使用一些随机字符替换。

关于python - 如何混淆 jinja2 中变量中的数据?例如变量 = "John Smith",我想要类似 "Odsv Wgtvs"的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54316432/

相关文章:

python - for循环中的比较运算符

python - 使用glob递归获取终端子目录

OnetoOneField 的 Django 订单查询集

flask - jinja2 - 显示不带括号/引号的项目

Ansible 模板在破折号后跳过字符串

python - 如何使用 C 读取目标文件的符号

python - 无法正确克隆 cStringIO 对象

python - Django 1.7 从内联表单中删除添加按钮

python - pdb.set_trace 替代 apache/wsgi

javascript - 从用户界面动态添加新的 WTForms FieldList 条目