【发布时间】:2017-02-24 13:55:05
【问题描述】:
我通过在没有数据库模型的情况下扩展 forms.Form 制作了一个 Django 表单。如何在 CharField 上设置 blank=False 以便 Django 验证检查该字段是否为空?
编辑: 在views.py中
def login(request):
if request.method=='POST':
#####
#####
else:
form=LoginForm()
buttontext='Login'
return render(request,'index.html',{'buttontext':buttontext,'form':form})
在forms.py中:
class LoginForm(forms.Form):
username=forms.CharField(label="Username",max_length=30,blank=False)
password=forms.CharField(label="Password",widget=forms.PasswordInput(),blank=False)
class Meta:
help_texts={'username':None,}
def clean(self):
self.cleaned_data=super(LoginForm,self).clean()
u=self.cleaned_data['username']
try:
us=Account.objects.all().get(username=u)
p=self.cleaned_data['password']
print 'original:', us.password
print 'got:', p
if p!=us.password:
add_error('password','Incorrect password')
except Account.DoesNotExist:
self.add_error('username','Username does not exist!')
return self.cleaned_data
【问题讨论】:
-
为了清楚起见,请分享您的 forms.py 和 views.py 代码。
-
我真的希望您不要在此处以纯文本形式存储密码。立即删除所有这些代码并使用内置的 Django 身份验证系统。
-
@DanielRoseman 我知道密码不应以纯文本形式保存,而是经过哈希处理。但这只是一个测试项目。我只是在学习django。我还没有被分配任何生产级项目。我真的要学会使用内置的auth库
标签: django django-forms