Django中有没有过滤器用星号代替文本显示?

0 投票
2 回答
1444 浏览
提问于 2025-04-16 04:44

我想知道有没有什么方法可以把所有的文字都显示成*,像这样

mytext = 'raja'

{{ mytext|password }} 应该显示成 ****

我们该怎么做呢?

2 个回答

2

这真的是个密码吗?那听起来不太好——你真的想让别人知道这个密码是4个字符吗?不如直接在模板里总是显示4个(或者5个,或者其他数量的)星号。

否则,我觉得没必要使用过滤器。只需通过上下文传入一串星号就行了:

mytext = 'raja'
ctx = Context({'mytext': '*' * len(mytext)})
t = Template('password: {{ mytext }}')
s = t.render(ctx)
3

很简单。这样做:

{% for char in mytext %}*{% endfor %}

话说回来,我可以问你在哪里显示密码吗?通常密码是不会在屏幕上显示的。如果你想在表单中显示密码,可以使用一个叫做 PasswordInput 的小工具。

正如@Ars所说,显示密码的长度是个坏主意。你可能想用随机数量的星号来代替显示。

撰写回答