/ login /“ uname”处的MultiValueDictKeyError,

时间:2020-03-24 14:26:39

标签: python mysql django

我正在使用python mysql和django在ecommmerce网站上工作。登录期间,我在/ login /处获得MultiValueDictKeyError。有人可以评论吗?

这是我的登录页面,名称“ uname”上发生错误:

 <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>

      <center>
        <form action="/login/" method="POST">
            {% csrf_token %}
            <input type="text" name="uname" placeholder="username"><br><br>
            <input type="text" name="pass" placeholder="password"><br><br>
            <input type="submit" value="Login">

        </form>
    </center>

    </body>
    </html>

这是我使用POST方法的views.py:

    from django.shortcuts import render, redirect, HttpResponse
    from django.http import HttpResponse
    from . models import *



    def home(request):
        return render(request,'index.html')

    def fn_login(request):
        v_username = request.POST['uname']
        v_password = request.POST['pass']
        try:
            login_obj = Login.objects.get(username=v_username,password=v_password)

            if login_obj.password == v_password:
                return render(request,'index.html')
            return HttpResponse('incorrect password')

        except Exception as e:
            print(e)
            return HttpResponse('invalid username')

这是myapp urls.py:

from django.contrib import admin 
from django.urls import path 

# importing views from views..py 
from .import views

urlpatterns = [ 
    path('index/',views.home),
    path('login/',views.fn_login,),

]   

我的错误是这样的:

MultiValueDictKeyError at /login/
'uname'
Request Method: GET
Request URL:    http://127.0.0.1:8000/login/
Django Version: 3.0.4
Exception Type: MultiValueDictKeyError
Exception Value:    
'uname'
Exception Location: /home/akshay/Desktop/Django/env1/lib/python3.6/site-packages/django/utils/datastructures.py in __getitem__, line 78
Python Executable:  /home/akshay/Desktop/Django/env1/bin/python
Python Version: 3.6.9
Python Path:    
['/home/akshay/Desktop/Django/Ekart',
 '/usr/lib/python36.zip',
 '/usr/lib/python3.6',
 '/usr/lib/python3.6/lib-dynload',
 '/home/akshay/Desktop/Django/env1/lib/python3.6/site-packages']
Server time:    Wed, 25 Mar 2020 14:22:15 +0000
enter code here

1 个答案:

答案 0 :(得分:0)

您可以尝试更改

v_username = request.POST['uname']
v_password = request.POST['pass']

对此

v_username = request.POST.get('uname')
v_password = request.POST.get('pass')
相关问题