因此,我尝试创建一个页面,其中详细信息仅向登录的用户显示。我可以使用静态更改内容
{% 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/