任何人都知道为什么我的代码不能从“如果用户不是None:”行开始运行?
回溯
1
2
内部服务器错误:/ login / 追溯(最近一次通话): 内部文件“ C:\ Users \ hanya \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ handlers \ exception.py”,第34行 响应= get_response(请求) 文件“ C:\ Users \ hanya \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ handlers \ base.py”,行137,在_get_response中 “改为不返回。” %(回调。模块,view_name) ValueError:视图Account.views.Login没有返回HttpResponse对象。它返回None。 [18 / Jan / 2019 21:59:25]“ POST / login / HTTP / 1.1” 500 56866
views.py
class Login(View):
form_class = AccountForm
template = 'login.html'
def get(self, request):
form=self.form_class(None)
return render(request, self.template, {'form':form})
def post (self, request):
if request.method=="POST":
form = self.form_class(request.POST)
if form.is_valid():
print('1')
username = form.cleaned_data.get("username")
password = form.cleaned_data.get("password")
print('2')
user = authenticate(username=username, password=password)
if user is not None:
print('3')
if user.is_active:
login(request, user)
return redirect('home.html')
else:
return HttpResponse("Inactive user.")
else:
return render(request, 'login.html')
urls.py
urlpatterns = [
...
path('emailverification/passwordchange/', views.PasswordChange, name='passwordchange'),
]
模板
{%extends 'base_form.html'%}
{%block content%}
<div class=container-fluid>
<form method="POST">
{%csrf_token%}
<label for="username">username</label>
<input type="text" placeholder="username" name="login" required><br>
<label for="password">password</label>
<input type="password" placeholder="password" name="login" required><br>
<button type="submit" class="btn btn-success">Submit</button>
</form>
<div class="container signin">
<p>Do not have an account? <a href="{% url 'registration'%}">register here</a>.</p>
<p>Forgot password?<a href="{%url 'passwordreset'%}">retrieve password</a></p>
<p>Improve your password security.<a href="{%url 'passwordchange'%}">change password</a></p>
</div>
<div>
{%endblock content%}
答案 0 :(得分:0)
您将模板名称“ home.html”传递给了重定向功能。您应该改为传递URL。除了url,您还可以使用其他一些参数选项。 data.table
答案 1 :(得分:0)
添加了代码
def clean(self, *args, **kwargs):
username=self.cleaned_data.get("username")
password=self.cleaned_data.get("password")
user=authenticate(username=username, password=password)
if not user:
raise forms.ValidationError("This user does not exist")
if not user.check_password(password):
raise forms.ValidationError("Incorrect Password")
if not user.is_active:
raise forms.ValidationError("This user is no longer active.")
return super(LoginForm, self).clean(*args, **kwargs)