密码字段以纯文本显示密码 [英] password field is showing password in plain text

查看:151
本文介绍了密码字段以纯文本显示密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用django allauth进行用户注册和登录系统。我可以通过简化使用for循环的代码行来显示表单。我也为每个字段获得了正确的字段类型(TextInput和PasswordInput)。但是,PasswordInput的密码字段以纯文本形式显示密码。我如何解决这个问题?



我的注册页面(account / signup.html)

 < form class =signupid =signup_formmethod =postaction ={%url'account_signup'%}> 
{%csrf_token%}
{%for form.visible_fields%}
< div class =form-group>
< label for ={{field.id_for_label}}> {{field.label}}< / label>
{{field.errors.0}}
< input type ={{field | input_type}}name ={{field.name}}class =form-controlid ={{field.id_for_label}}>
< / div>
{%endfor%}
< / form>

filters.py

 从django导入模板
register = template.Library()

@ register.filter('input_type')
def input_type(field):
print('field',field.field.widget .__ class__)
return field.field.widget .__ class __.__ name__
pre>

我如何以点显示密码?

解决方案

您可以通过在表单类中覆盖 __ init __ / p>

  def __init __(self,* args,** kwargs):
super().__ init __(* args,* * kwargs)
self.fields ['password']。widget.attrs ['class'] ='form-control'


I have used django allauth for user registration and login system. I could show the form by simplifying the lines of code using for loop. I got the right field type(TextInput and PasswordInput) for each field too. However the password field which has PasswordInput shows password in plain text. How can i resolve this?

my signup page(account/signup.html)

<form class="signup" id="signup_form" method="post" action="{% url 'account_signup' %}">
    {% csrf_token %}
     {% for field in form.visible_fields %}
     <div class="form-group">
        <label for="{{ field.id_for_label}}">{{field.label}}</label>
        {{ field.errors.0 }}
        <input type="{{field|input_type}}" name="{{ field.name }}" class="form-control" id="{{ field.id_for_label}}">
     </div>
     {% endfor %}
</form>

filters.py

from django import template
register = template.Library()

@register.filter('input_type')
def input_type(field):
    print('field',field.field.widget.__class__)
    return field.field.widget.__class__.__name__

How can i show password in dot?

解决方案

You can add class by overriding __init__ method in form class

def __init__(self, *args, **kwargs): 
    super().__init__(*args, **kwargs) 
    self.fields['password'].widget.attrs['class'] = 'form-control'

这篇关于密码字段以纯文本显示密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆