繁体   English   中英

如何混淆jinja2中变量中的数据? 例如变量=“ John Smith”,我想要类似“ Odsv Wgtvs”的内容

[英]How do I obfuscate data in variables in jinja2? e.g. variable = “John Smith”, I want something like “Odsv Wgtvs”

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

{% if user.is_authenticated %}

因此,我可以用“ Dummy Name替换{{ celebrity.name }}之类的东西,但是每次出现的情况都是一样的。

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

如果没有简单的方法,我会很乐意编写自己的函数,但是目前我不确定是否应该在html模板的jinja2中编写它,还是应该在views.py中编写它,所以不胜感激指导。

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

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 }}

如果混淆必须是确定性的(相同的值始终会产生相同的混淆结果),则可以使用哈希函数(将返回乱码,而不是实名),或用于替换名称的固定字典,等等。

如果替换不能确定,则可以使用一些随机的char替换。

使用set

{% if user.is_authenticated %}
  {% set celebrity_name = celebrity.name %}
{% else %}
  {% set celebrity_name = "dummy" %}

还是您想要唯一的虚拟值..? 如果要使用其他值,可以将Python中的任何内容分配给celebrity_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM