[英]MultiValueDictKeyError in django
嗨,我正在尝试在django中创建一个注册页面-
我的views.py-
from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect
def home(request):
if request.method == 'POST':
post = request.POST
if 'signup' in post:
return HttpResponseRedirect('/wall/signup')
return render(request, 'wall/home_page.html')
def signup(request):
if request.method == 'POST':
post = request.POST
username = post['username']
password = post['password']
return success(request, username)
return render(request, 'wall/signup.html')
def success(request, name):
if request.method == 'POST':
post = request.POST
if 'home' in post:
return HttpResponseRedirect('/wall')
return render(request, 'wall/success_page.html', {'name': name})
和我的success_page.html-
<html>
<body>
Success {{ name }}
<form id="form" method="post">
{% csrf_token %}
<button type="submit" name="home">
Home
</button>
</form>
</body>
</html>
但是当我点击“主页”按钮时,它给出了错误-
MultiValueDictKeyError at /wall/signup/
"'username'"
我认为这行username = post['username']
给出了此错误
我不知道如何解决它,我什至不知道为什么我得到这个错误。
我该如何解决?
success_page.html
中的<form>
标记没有action
属性,因此,您单击Home
按钮,会将表单发送回signup()
视图。
您应该更改signup()
视图以重定向到成功视图,而不是返回success()
的结果:
def signup(request):
if request.method == 'POST':
...
return redirect('signup_success', username)
其中signup_success
是指向success()
视图的URL的名称。
urlpatterns = patterns('',
...
url(r'^success/(?P<name>\w+)/$', views.success, name='signup_success'),
...
)
或者,将action
属性添加到success_page.html
:
<form id="form" action="{% url 'signup_success' name %}" method="post">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.