Django前端用户登入模块报错:MultiValueDictKeyError
报错信息:
view文件,下面login方法:
def login(request): print request.GET
# return render_to_response("login.html")
user = request.GET["user"]
passwd = request.GET["passwd"]
if user == 'python'and passwd == '123':
return render_to_response("login.html")
else:
return render_to_response("login.html",{'err':"Login failure!!!"})
login.html文件:
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<form class="navbar-form navbar-right" method="get" action="/login/"
<div class="form-group">
<input type="text" class="span3" name="user" placeholder="用户名">
</div>
<div class="form-group">
<input type="text" class="span3" name="passwd" placeholder="密码">
</div>
<button type="submit" class="btn btn-success">Sign in</button>
{% if err %}
{{ err }}
{% endif %}
</form>
</div><!--/.navbar-collapse -->
</div>
</nav>
回答:
user = request.GET["user"]
request.GET里面并没有key "user",也就是user没有传在url参数里面
回答:
请问,这个问题如何解决啊?但是我在后台日志里面,可以获得user和passwd的参数啊!
回答:
request.GET
包含了所有GET
请求的内容,看报错信息,大概是 key
出问题
把提交的字段user 改掉,可能和自带的key user
冲突。
<input type="text" class="span3" name="username" placeholder="用户名">
并使用 request.GET.get('username')
这样的方法获取key
的value
,如果没有这个值,返回 None
。
PS: 提主做登录功能,表单不能 GET
提交啊,密码等敏感信息直接暴力在url
了。应该改成POST
方式提交
以上是 Django前端用户登入模块报错:MultiValueDictKeyError 的全部内容, 来源链接: utcz.com/a/163940.html