django - Post 方法对有效和无效数据都返回 false
问题描述
我正在尝试创建一个登录页面,但身份验证对有效和无效数据返回相同的结果(它在所有情况下都返回“无效用户名”)。我检查了所有内容,但不幸的是什么也抓不到。以下是我的代码。我很感激任何帮助。
表格.py:
class UserLoginForm(forms.Form):
email = forms.CharField(widget = forms.TextInput({'placeholder': 'Enter Your Email', 'class': 'form-control'}))
password = forms.CharField(widget = forms.PasswordInput({'placeholder':'Password','class':'form-control'}))
视图.py:
class IndexPage(TemplateView):
template_name = 'Athentication/templates/Athentication/index.html'
class LoginForm(TemplateView):
template_name = 'Athentication/templates/Athentication/login.html'
form_class = UserLoginForm
def get(self,request):
form = self.form_class()
return render(request,self.template_name,{'form':form})
def post(self, request):
form = self.form_class()
if request.method =='POST':
email=request.POST.get('email')
password=request.POST.get('password')
user = authenticate(self.request, email = email, password = password)
if user is not None and user.is_valid:
login(self.request,user)
return HttpResponse('valid Username')
else:
return HttpResponse('Invalid Username')
return render(request,template_name,{'form':form})
网址.py:
urlpatterns = [path('', views.LoginForm.as_view(), name='login_page'),
path('index/', views.IndexPage.as_view(), name = 'index'),
path('admin/', admin.site.urls),
]
登录.html:
<form method="post" >
<div class="form-group mb-3">
<div class="input-group input-group-merge input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-email-83"></i></span>
</div>
{{form.email}}
</div>
</div>
<div class="form-group">
<div class="input-group input-group-merge input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-lock-circle-open"></i></span>
</div>
{{form.password}}
</div>
</div>
<div class="custom-control custom-control-alternative custom-checkbox">
<input class="custom-control-input" id=" customCheckLogin" type="checkbox">
<label class="custom-control-label" for=" customCheckLogin">
<span class="text-muted">Remember me</span>
</label>
</div>
<div class="text-center">
<input class="btn btn-primary my-4" type="submit" value="Enter" />
{% csrf_token %}
</div>
</form>
</div>
</div>
解决方案
像这样更改您的代码:
def post(self, request):
form = self.form_class()
if form.is_valid():
email=request.POST.get('email')
password=request.POST.get('password')
user = authenticate(self.request, email = email, password = password)
if user:
login(self.request,user)
return HttpResponse('valid Username')
else:
return HttpResponse('Invalid Username')
return render(request,template_name,{'form':form})
推荐阅读
- reactjs - 未捕获(承诺中)ReferenceError:数据未在反应组件中定义
- linux - 如何使用字符串分隔符将标准错误重定向到标准输出
- c# - C# 代码中的数据绑定控件(.cs 文件)
- xcode - Xcode 11 Export for Localization 不起作用,Include Screenshots 功能被禁用,并且在测试日志中找不到 XCUITest 屏幕截图附件
- azure - Azure 公共 IP 的多个 FQDN 或 DNS
- sql-server - 删除无效行以添加外键约束?
- python - 使用祖先的投影查询抛出错误 400
- go - 系统调用()与调用()?
- python - 使用二分法求一个数的平方根
- java - 如何处理方法和构造函数之间的值