我正在尝试创建一个页面,其中只向登录的用户显示详细信息。我可以使用静态更改内容
{% if user.is_authenticated %}
所以我可以替换像{{ celebrity.name}} 这样的东西Dummy Name,但是每次出现都是一样的。
我希望有一种简单的方法celebrity.name可以混淆混淆实际数据。
如果没有简单的方法我会愉快地编写我自己的函数,但是在这一点上我不确定我是否应该在html模板中的jinja2中编写它,或者我是否应该在views.py中编写它,
使用 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,而不是真实姓名),或者用于替换名称或其他内容的固定字典。
如果替换可能是非确定性的,您可以使用一些随机字符替换。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。