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') 这样的方法获取keyvalue,如果没有这个值,返回 None

PS: 提主做登录功能,表单不能 GET 提交啊,密码等敏感信息直接暴力在url了。应该改成POST方式提交

以上是 Django前端用户登入模块报错:MultiValueDictKeyError 的全部内容, 来源链接: utcz.com/a/163940.html

回到顶部