我的项目中有登录表单。当我输入正确的用户名和密码时,它不会发布我的请求,并且我的浏览器区域如下所示: http://127.0.0.1:8000/user/login/?csrfmiddlewaretoken=EukLSCRC5B25iBrDXqVsQ7iyF2FUUhgrldri2MIrb3IM8f4dMngo66tciJkmfNYt&username=admin&password=123 (因为我的用户名:admin,密码:123)
我尝试将“表单方法” POST更改为以html登录模板发布,但不起作用。而且我删除了csrf_token,但实际上再也无法使用了。
class LoginForm(forms.Form):
username = forms.CharField(label = "Username")
password = forms.CharField(label = "Password", widget=forms.PasswordInput)
def loginUser(request):
form = LoginForm(request.POST or None)
context = {
"form": form
}
if form.is_valid():
username = form.cleaned_data.get("username")
password = form.cleaned_data.get("password")
user = authenticate(username = username, password=password)
if user is None:
messages.info(request,"Username or Password is incorrect! Try again.")
return render(request,"login.html", context)
messages.success(request,"Login successful! Welcome honey.")
login(request,user)
return redirect("index")
return render(request,"login.html",context)
app_name = "user"
urlpatterns = [
path('register/',views.register, name ="register"),
path('login/',views.loginUser, name ="login"),
path('logout/',views.logoutUser, name ="logout"),
]
{% extends "layout.html" %}
{% block body %}
{% load crispy_forms_tags %}
<div class="row">
<div class="col-md-6 offset-md-3">
<h3>Login</h3>
<hr>
<form method = "post">
{% csrf_token %}
{{form|crispy}}
<button type = "submit" class = "btn btn-danger">Sign In</button>
</form>
</div>
</div>
{% endblock %}
浏览器区域显示:http://127.0.0.1:8000/user/login/?csrfmiddlewaretoken=EukLSCRC5B25iBrDXqVsQ7iyF2FUUhgrldri2MIrb3IM8f4dMngo66tciJkmfNYt&username=admin&password=123 (因为我的用户名:admin,密码:123)
答案 0 :(得分:0)
可以在表单中添加动作吗?您的表格没有动作。
<form method = "post" action="{% url 'user:login' %}>
答案 1 :(得分:-1)
不要使用form.cleaned_data, 使用:
request.POST.get("username","")
密码相同!