开发者社区> 问答> 正文

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

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

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

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

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

展开
收起
一码平川MACHEL 2019-01-23 15:58:22 2144 0
1 条回答
写回答
取消 提交回答
  • 使用 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,而不是真实姓名),或者用于替换名称或其他内容的固定字典。

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

    2019-07-17 23:26:41
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载