因此,我试图创建一个页面,其中仅向登录的用户显示详细信息。我能够使用来静态更改内容
{% if user.is_authenticated %}
所以我可以用{{ celebrity.name
来代替Dummy Name
}},但是每次出现的情况都是相同的。
我希望有一种简单的方法可以弄乱celebrity.name
来混淆实际数据。
如果没有简单的方法,我会很乐意编写自己的函数,但是目前我不确定是否应该在html模板的jinja2中编写它,还是应该在views.py中编写它。不胜感激。
答案 0 :(得分:2)
您可以编写自己的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 }}
如果混淆必须是确定性的(相同的值始终会产生相同的混淆结果),则可以使用哈希函数(将返回不完整的名称,而不是实名),或者使用固定的字典来替代名称,或者其他
如果替换不能确定,则可以使用一些随机的char替换。
答案 1 :(得分:1)
使用set
{% if user.is_authenticated %}
{% set celebrity_name = celebrity.name %}
{% else %}
{% set celebrity_name = "dummy" %}
还是您想要唯一的伪值..?如果要使用其他值,则可以将Python中的任何内容分配给celebrity_name
。