首页 > 解决方案 > 如何在 django 中使用 request.GET[] 从收音机和日期输入中获取值

问题描述

我正在开发一个应用程序,在该应用程序中,我必须在 csv 文件中添加所有表单输入数据。我使用普通引导表单并使用 request.GET [] 访问表单输入数据,而不是 Django 表单。一切正常,但收音机和日期输入不起作用并出现此错误MultiValueDictKeyError at /abc/

这是我的代码views.py

from django.http import HttpResponse
#from django.templatetags.static import static
from django.shortcuts import render
#from django.contrib.staticfiles.templatetags.staticfiles import static
import csv
from csv import writer

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

def abc(request):

    if request.method == "GET":
        sid = request.GET['sid']
        sname = request.GET['sname']
        gender = request.GET['gender']
        dob = request.GET['dob']
        city = request.GET['city']
        state = request.GET['state']
        email = request.GET['email']
        quali = request.GET['quali']
        stream = request.GET['stream']


        alist = [sid, sname, gender, dob, city, state, email, quali, stream ]
        print(alist)
        # Open file in append mode
        with open('students.csv', 'a+', newline='') as write_obj:
            # Create a writer object from csv module
            csv_writer = writer(write_obj)
            # Add contents of list as last row in the csv file
            csv_writer.writerow(alist)
        print("Added Successfully!!!")

        print(sid)
        
        flist = []
        flist.append({'sid':sid})
        flist.append({'sname':sname})
        flist.append({'gender':gender})
        flist.append({'dob':dob})
        flist.append({'city':city})
        flist.append({'state':state})
        flist.append({'email':email})
        flist.append({'quali':quali})
        flist.append({'stream':stream})

        return render(request, 'filedata/abcd.html', {"flist": flist})

主页.html

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Stacked form</h2>
  <form action="/abc" method="get" name="myForm" enctype="multipart/form-data">
  
    <div class="form-group">
      <label for="sid">Student ID</label>
      <input type="text" class="form-control" id="sid" placeholder="Enter Student ID" name="sid">
    </div>
    
    <div class="form-group">
      <label for="sname">Student Name</label>
      <input type="text" class="form-control" id="sname" placeholder="Enter Student Name" name="sname">
    </div>
    
    <label for="gender">Gender</label>
    
    <div class="form-check">
      <label class="form-check-label">
        <input type="radio" class="form-check-input" id="male" value="male" name="gender">Male
      </label>
    </div>
    
    <div class="form-check">
      <label class="form-check-label">
        <input type="radio" class="form-check-input" id="female" value="female" name="gender">Female
      </label>
    </div>
    
    <div class="form-group">
      <label for="dob">Date Of Birth</label>
      <input class="form-control" type="date" value="2011-08-19"  id="dob">
    </div>
    
    <div class="form-group">
      <label for="city">City</label>
      <input type="text" class="form-control" id="city" placeholder="Enter City" name="city">
    </div>
    
    <div class="form-group">
      <label for="state">State</label>
      <input type="text" class="form-control" id="state" placeholder="Enter State" name="state">
    </div>
    
    <div class="form-group">
      <label for="email">Email ID</label>
      <input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
    </div>
    
    <div class="form-group">
      <label for="quali">Qualification</label>
      <input type="text" class="form-control" id="quali" placeholder="Enter Qualification" name="quali">
    </div>
    
    <div class="form-group">
      <label for="stream">Stream</label>
      <input type="text" class="form-control" id="stream" placeholder="Enter stream" name="stream">
    </div>
    
    
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
</div>

</body>
</html>


标签: python-3.xdjango

解决方案


name="dob"在日期上缺少属性,因此它不会以形式发送,收音机也应该具有交替value="male"value="female"带有 name="gender"属性才能正确发送。

您始终可以在浏览器中检查网络选项卡,以查看数据是否已相应发送


推荐阅读