![](/img/trans.png)
[英]Python / Django / Jinja2: How to extend a variable name with the value of another variable (e.g. in a for-loop)?
[英]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.