django - 为什么当我使用 PasswordChangeForm 时 is_valid 返回 None?我完全确定我输入的凭据是正确的
问题描述
当我尝试提交表单时,它会抛出一个 ValueError。下面是我的代码。
def passchange(request):
if request.user.is_authenticated:
if request.method == "POST":
print(request.POST)
fm = PasswordChangeForm(user=request.user, data=request.POST)
print(fm)
if fm.is_valid():
fm.save()
update_session_auth_hash(request, fm.user)
messages.success(request, 'Password Changed Successfully')
if fm.user.location=="Latur":
return HttpResponseRedirect('/laturhome/')
elif fm.user.location=="Nashik":
return HttpResponseRedirect('/nashikhome/')
elif fm.user.location=="Dhule":
return HttpResponseRedirect('/dhulehome/')
elif fm.user.location=="Akola":
return HttpResponseRedirect('/akolahome/')
elif fm.user.location=="Solapur":
return HttpResponseRedirect('/solapurhome/')
else:
print(fm.error_messages)
return HttpResponse('Not valid')
else:
fm = PasswordChangeForm(user=request.user)
return render(request, 'account/passchange.html', {'form':fm})
else:
return HttpResponseRedirect('/login/')
终端显示如下: {'password_mismatch': '两个密码字段不匹配。', 'password_incorrect': '您的旧密码输入错误。请重新输入。'}
还有我的模板:
<form action="" method="post" novalidate>
{% csrf_token %}
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<p>{{ error }}</p>
{% endfor %}
{% endif %}
{% for fm in form %}
{{fm.label_tag}} {{fm}} {{fm.errors|striptags}} <br> <br>
{% endfor %}
<input type="submit" value="Save">
</form>
<a href="{% url 'logout' %}">Logout</a>
我哪里做错了?它是否与我创建了自定义用户模型而不使用 django 用户模型有关?is_valid 函数有替代品吗?我可以在这里写我自己的验证吗?
Traceback Switch to copy-and-paste view
C:\Users\pande\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py, line 47, in inner
response = get_response(request) …
▼ Local vars
Variable Value
exc
ValueError("The view account.views.passchange didn't return an HttpResponse object. It returned None instead.")
get_response
<bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x000001B4A0A297F0>>
request
<WSGIRequest: POST '/passchange/'>
C:\Users\pande\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py, line 188, in _get_response
self.check_response(response, callback) …
▼ Local vars
Variable Value
callback
<function passchange at 0x000001B4A10E5820>
callback_args
()
callback_kwargs
{}
middleware_method
<bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x000001B4A0A9DD30>>
request
<WSGIRequest: POST '/passchange/'>
response
None
self
<django.core.handlers.wsgi.WSGIHandler object at 0x000001B4A0A297F0>
wrapped_callback
<function passchange at 0x000001B4A10E5820>
C:\Users\pande\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py, line 309, in check_response
raise ValueError( …
▼ Local vars
Variable Value
callback
<function passchange at 0x000001B4A10E5820>
name
'The view account.views.passchange'
response
None
self
<django.core.handlers.wsgi.WSGIHandler object at 0x000001B4A0A297F0>
解决方案
推荐阅读
- python - 从文本文件加载词向量 - GENSIM PYTHON
- python - *Python* 如果条件为真,如何将两个单独的 PKL 文件中的多个值复制到具有两个键的单个字典中?
- c# - MongoDB FilterDefinition 和 C# 中的接口
- python - 将 Python (matplotlib) 图形保存为 eps,将文本保存为 tex 文件
- google-apps-script - 如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?
- java - Java Bound 不匹配错误,但我扩展了 Comparable 接口
- javascript - 干净的解决方案,以确保在应用程序初始化时创建单例服务
- lua - 如何使用探路者让NPC追逐玩家
- javascript - 为什么在我的调试器中使用 await 会产生与使用 .then 不同的行为?
- javascript - 如何使用ajax请求上传文件