python - django表单没有错误
问题描述
我正在尝试创建一个自定义登录表单,当我验证表单时没有错误并且它无效
有没有更好的方法来实现我想要的?至少我只想从表单字段中获取值。
class LoginForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput(
attrs={
'class': 'form-control',
'placeholder': '',
}
))
def login(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
print(True)
else:
print(False)
print(username)
print(password)
# authUrl = ""
# authData = {'usname': request.POST['username'],
# 'psword': request.POST['password'],
# }
# s = requests.Session()
# rAuth = s.post(authUrl, data=authData).json()
# if rAuth["status"] == 200:
# pass
else:
form = LoginForm()
return render(request, 'users/login.html', {'form': form})
解决方案
我通常像这样使用自己的表格
形式
class LoginForm(forms.Form):
email = forms.EmailField(label="Email")
password = forms.CharField(label="Password", widget=forms.PasswordInput())
def clean(self, *args, **kwargs):
email = self.cleaned_data.get("email")
password = self.cleaned_data.get("password")
user = authenticate(username=email, password=password)
if not user:
raise forms.ValidationError("Failed to authenticate this user")
if not user.check_password(password):
raise forms.ValidationError("Incorrect password")
if not user.is_active:
raise forms.ValidationError("This user has been deactivated")
return super(LoginForm, self).clean(*args, **kwargs)
看法
class LoginView(View):
def get(self, request):
context = {
'form': LoginForm()
}
return render(request, "www/login.html", context)
def post(self, request):
form = LoginForm(request.POST)
if form.is_valid():
user = authenticate(username=request.POST.get("email"), password=request.POST.get("password"))
login(request, user)
return redirect('index')
context = {'form': form}
return render(request, "www/login.html", context)
希望这对你有一些好处
推荐阅读
- node.js - aws lambda 上的无服务器出现内部服务器错误的 502 错误
- go - 主机名中的无效字符“\r”:51813
- node.js - Node JS promise - 使用以前运行的参数多次运行函数
- javascript - 使用 AJAX 在同一页面中的多个日期选择器
- list - 使用列表理解将元组列表转换为其元素列表
- xml - 如何使用 PowerShell 读取包含标头的 XML 文件
- c# - 如何在返回的类中调用方法
- azure - Azure 应用服务计划 - 对多个实例的可用性有影响吗?
- html - 如何在同一个 div 中创建可折叠的侧边栏?
- javascript - 在 Vuex 中使用带有 mapState、mapMutation 的 get/set Computed 属性