Django 视图ats.views.index没有';t返回HttpResponse对象。它没有返回任何结果
视图ats.views.index未返回HttpResponse对象。它没有返回任何结果 我正在尝试实现一个身份验证系统,如果我正确输入密码,我不会遇到任何问题,但当我输入错误时,我会得到这个错误。有人知道我怎么解决这个问题吗 这是我的看法Django 视图ats.views.index没有';t返回HttpResponse对象。它没有返回任何结果,django,Django,视图ats.views.index未返回HttpResponse对象。它没有返回任何结果 我正在尝试实现一个身份验证系统,如果我正确输入密码,我不会遇到任何问题,但当我输入错误时,我会得到这个错误。有人知道我怎么解决这个问题吗 这是我的看法 def index(request): if request.method == 'POST': form = AuthenticationForm(data=request.POST) if form.is_vali
def index(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return render(request, "homepage.html", context_instance=RequestContext(request))
else:
form = AuthenticationForm()
return render(request, "index.html", {'form': form})
这是我的html
{% block content %}
<form class="box" method = "post">
{% csrf_token %}
<h1>Ats</h1>
{{ form }}
<input type="submit" name="" value="Login">
</form>
{% endblock %}
{%block content%}
{%csrf_令牌%}
自动测试系统
{{form}}
{%endblock%}
请求可以是POST请求,但是表单有效()。在这种情况下,您的视图将返回None
您应该“取消”显示返回渲染(…)
部分:
from django.shortcuts import redirect
def index(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return redirect('some-view-name')
else:
form = AuthenticationForm()
return render(request, 'index.html', {'form': form})
从django.shortcuts导入重定向
def索引(请求):
如果request.method==“POST”:
表单=身份验证表单(数据=request.POST)
如果form.is_有效():
user=form.get\u user()
登录(请求、用户)
返回重定向('some-view-name')
其他:
form=AuthenticationForm()
返回呈现(请求'index.html',{'form':form})
请注意,这里您的视图不执行身份验证。您应该首先检查密码(或其他令牌)是否匹配。有关更多信息,请参阅上的文档
如果POST请求成功,您应该重定向以实现。重新排列代码应该有效
def index(request):
form = AuthenticationForm()
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return render(request, "homepage.html", context_instance=RequestContext(request))
return render(request, "index.html", {'form': form})
如果表单无效,则需要定义else条件
def index(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return render(request, "homepage.html", context_instance=RequestContext(request))
else:
return render(request, "index.html", {'form': form, 'errors': form.errors})
else:
form = AuthenticationForm()
return render(request, "index.html", {'form': form})
def索引(请求):
如果request.method==“POST”:
表单=身份验证表单(数据=request.POST)
如果form.is_有效():
user=form.get\u user()
登录(请求、用户)
返回呈现(请求,“homepage.html”,context_实例=RequestContext(请求))
其他:
返回呈现(请求,“index.html”,{'form':form,'errors':form.errors})
其他:
form=AuthenticationForm()
返回呈现(请求,“index.html”,{'form':form})
在模板中,您可以通过访问此上下文变量{{errors}}
来显示表单错误
{%block content%}
{%if错误%}
{{errors}}
{%endif%}
{%csrf_令牌%}
自动测试系统
{{form}}
{%endblock%}
出现此问题的原因是,如果表单无效,您尚未编写HttpResponse对象
def index(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return render(request, "homepage.html", context_instance=RequestContext(request))
else:
return render(request, "index.html", {'form': form, 'errors': form.errors})
else:
form = AuthenticationForm()
return render(request, "index.html", {'form': form})
若要在视图中解决此问题,请在表单无效时写入并返回HTTP响应
def index(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return render(request, "homepage.html", context_instance=RequestContext(request))
else:
return render(request, "index.html", {'form': form, 'errors': form.errors})
else:
form = AuthenticationForm()
return render(request, "index.html", {'form': form})
在index.html中
{% block content %}
{% if errors %}
{{ errors }}
{% endif %}
<form class="box" method = "post">
{% csrf_token %}
<h1>Ats</h1>
{{ form }}
<input type="submit" name="" value="Login">
</form>
{% endblock %}
如果您的表单.is\u valid()
无效怎么办?