密码字段以纯文本显示密码 [英] password field is showing password in plain text
问题描述
我已经使用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导入模板
pre>
register = template.Library()
@ register.filter('input_type')
def input_type(field):
print('field',field.field.widget .__ class__)
return field.field.widget .__ class __.__ name__
我如何以点显示密码?
解决方案您可以通过在表单类中覆盖
__ 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 classdef __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['password'].widget.attrs['class'] = 'form-control'
这篇关于密码字段以纯文本显示密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!