python - MultiValueDictKeyError at /login/ "uname,
问题描述
我正在使用 python mysql 和 django 开发一个电子商务网站。在登录期间,我进入MultiValueDictKeyError
/login/。有人可以评论这个吗?
这是我的登录页面,名称“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
解决方案
你能试着改变吗
v_username = request.POST['uname']
v_password = request.POST['pass']
到下面这个
v_username = request.POST.get('uname')
v_password = request.POST.get('pass')
推荐阅读
- android - 运行时的kotlin注解方法
- apache-kafka - 如何使用 MSK 连接将数据从 AWS MSK (kafka) 流式传输到雪花
- node.js - 套接字未侦听连接事件
- java - 遍历单选按钮并单击
- javascript - 在新的 Date() js 中更改日期而不翻转月份、年份或时间
- java - 检查一个对象类是否是另一个类的子类,但使用泛型
- postgresql - 重命名 PostgreSQL 中的列
- javascript - 为什么我得到':'预期“?我正在尝试定义一些函数来运行一些单元测试以进行基准测试
- javascript - 如何通过url编码将多个参数发送到php文件
- python - Python Active Recon - 基本功能