python—如何在 django 中解决 MultiValueDictKeyError
该程序的目的是让用户有权编辑其数据库中的某些详细信息。
这是views.py 文件
def edit_profile(request):
user_info = UserInfo.objects.all()
if request.method == 'POST':
username_edit = request.POST['edit_username']
firstname_edit = request.POST['edit_firstname']
lastname_edit = request.POST['edit_lastname']
email_edit = request.POST['edit_email']
phone_number_edit = request.POST['edit_phone']
if len(phone_number_edit) == 11:
if int(phone_number_edit) / 1 == 0:
if User.objects.filter(username=username_edit).exists():
messages.info(request, 'Username already exists!')
return redirect('edit')
elif User.objects.filter(email=email_edit).exists():
messages.info(request, 'Email has already been used')
return redirect('edit')
else:
new_user_info = User.objects.all()
new_user_info.username = username_edit
new_user_info.first_name = firstname_edit
new_user_info.last_name = lastname_edit
new_user_info.email = email_edit
new_user_info.save()
new_user_info_phone = user_info
new_user_info_phone.phone_number = phone_number_edit
new_user_info_phone.save()
return redirect('profile')
else:
messages.info(request, 'Phone number not valid')
return redirect('edit')
else:
messages.info(request, 'Phone number not valid')
return redirect('edit')
else:
return render(request, 'profile_edit.html', {'user_info': user_info})
这是 html.file
<form action="", method="post">
{% csrf_token %}
{% for message in messages %}
<p style="color: red;">{{message}}</p>
{% endfor %}
<h3>Click done after editing</h3>
<p>Username: <input type="text", name="edit_username", value="
{{user.username}}"></p>
<p>First Name: <input type="text", name="edit_firstname", value="
{{user.first_name}}"></p>
<p>Last Name: <input type="text", name="edit_lastname", value="
{{user.last_name}}"></p>
<p>Email: <input type="email", name="edit_email", value="{{user.email}}"></p>
{% for user in user_info %}
<p>Phone Number: <input type="text", value="{{user.phone_number}}",
name="edit_phone"></p>
{% endfor %}
<input type="submit", value="Done">
</form>
这是 urls.py 文件
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('edit', views.edit_profile, name='edit'),
]
每当我使用“python manage.py runserver”运行服务器时,我总是会收到此错误“MultiValueDictKeyError at /edit 'edit_username'”
它还说“在处理上述异常('edit_username')期间,发生了另一个异常:
username_edit = request.POST['edit_username'] "。
我一直被困在这里。我该怎么做