장고에서 비밀번호 입력 필드를 만드는 방법
안녕하세요 저는 일부 필드와 암호 필드와 함께 django 모델 클래스를 사용하고 있습니다. 일반 일반 텍스트를 표시하는 대신 암호 입력을 표시하고 싶습니다. 다음과 같은 모델 클래스를 만들었습니다.
class UserForm(ModelForm):
class Meta:
password = forms.CharField(widget=forms.PasswordInput)
model = User
widgets = {
'password': forms.PasswordInput(),
}
하지만 다음 오류가 발생합니다. NameError : name 'forms'is not defined.
django 버전 1.4.0을 사용하고 있습니다. 나는이 링크를 따랐다 : Django 암호 문제
여전히 같은 오류가 발생합니다. 어떡해 내가 어디에서 잘못되고 있는지 도와주세요.
가져 오기에 다음을 포함해야합니다.
from django import forms
위젯은 속성이 아닌 함수 호출이어야합니다. 괄호가 누락되었습니다.
class UserForm(ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
모든 모델에서 사용할 수있는 고유 한 암호 필드를 만드는 것은 어떻습니까?
from django import forms
class PasswordField(forms.CharField):
widget = forms.PasswordInput
class PasswordModelField(models.CharField):
def formfield(self, **kwargs):
defaults = {'form_class': PasswordField}
defaults.update(kwargs)
return super(PasswordModelField, self).formfield(**defaults)
이제 모델에서
password = PasswordModelField()
@DrTyrsa가 정확합니다. 괄호를 잊지 마세요.
from django.forms import CharField, Form, PasswordInput
class UserForm(Form):
password = CharField(widget=PasswordInput())
나는 추가 수입없이 팔로우로했다
from django import forms
class Loginform(forms.Form):
attrs = {
"type": "password"
}
password = forms.CharField(widget=forms.TextInput(attrs=attrs))
아이디어는 다음과 같은 양식 소스 코드입니다. https://docs.djangoproject.com/en/2.0/_modules/django/forms/fields/#CharField
이 질문은 몇 년 전에 요청되었으며 검색 결과에 잘 색인되어 있기 때문에이 답변은 동일한 문제로 여기에 오는 사람들에게 도움이 될 수 있지만 최신 Django 버전을 사용하고 있습니다.
내가 사용하고 장고 1.11 그러나 그것은뿐만 아니라 장고 2.0 작동합니다.
모델 사용자를 사용하고 있다는 점을 고려하여 Django의 기본 User () 모델을 사용하고 있다고 가정합니다.
User () 모델에는 이미 암호 필드가 있으므로 위젯을 추가 할 수 있습니다.
from django import forms
from django.contrib.auth.models import User
# also, it will work with a custom user model if needed.
# from .models import User
class UserRegistrationForm(forms.ModelForm):
class Meta:
model = User
fields = ['username', 'password']
widgets = {
# telling Django your password field in the mode is a password input on the template
'password': forms.PasswordInput()
}
저는 Django를 처음 사용합니다. 제 답변이 정확하지 않다면 알려주세요. 나중에 수정 해 드리겠습니다.
아주 간단합니다.
You should get password
form field out of Meta
class.
What was written by the OP at password = forms.Charfield(widget=forms.PasswordInput)
was correct. It just does not belong in the class Meta:
section. Instead, it should be above it, indented one level below class UserForm
....
ReferenceURL : https://stackoverflow.com/questions/9324432/how-to-create-password-input-field-in-django
'IT story' 카테고리의 다른 글
리플렉션을 통해 선택적 매개 변수로 메서드 호출 (0) | 2021.01.05 |
---|---|
공백을 제거하려면 트리밍 (0) | 2021.01.05 |
CTE에서 테이블의 레코드 업데이트 (0) | 2021.01.05 |
git 및 bitbucket과 함께 자신의 사용자 이름 / 비밀번호 사용 (0) | 2021.01.05 |
쉘 스크립트를 통해 echo 명령으로 mysql_secure_installation 자동화 (0) | 2021.01.05 |