开发者社区> 问答> 正文

如何在jinja2中对变量中的数据进行模糊处理?例如变量=“约翰史密斯”,我想要像“Odsv Wgtvs”这样的东西

一码平川MACHEL 2019-01-23 15:58:22 494

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

{% if user.is_authenticated %}
所以我可以替换像{{ celebrity.name}} 这样的东西Dummy Name,但是每次出现都是一样的。

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

如果没有简单的方法我会愉快地编写我自己的函数,但是在这一点上我不确定我是否应该在html模板中的jinja2中编写它,或者我是否应该在views.py中编写它,

分享到
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:41

    使用 set

    {% if user.is_authenticated %}
    {% set celebrity_name = celebrity.name %}
    {% else %}
    {% set celebrity_name = "dummy" %}
    或者你想拥有独特的虚拟值..?celebrity_name如果要使用不同的值,可以从Python分配任何内容。


    您可以编写自己的自定义模板过滤器:

    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 }}
    如果混淆必须是确定性的(相同的值总是产生相同的混淆结果),您可以使用散列函数(将返回giberrish,而不是真实姓名),或者用于替换名称或其他内容的固定字典。

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

    0 0
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章