python-3.x - 通过表单提交数据但未存储在数据库中
问题描述
我已经创建了models.py和views.py,想通过首页提交数据,那些需要存储在数据库中但未能发送数据的人。当我在填写表单后单击提交时,它会转到 views.py 中提到的 else 块,但不检查 if 语句。帮助申请。
模型.py
from django.db import models
# Create your models here.
# creating modeles here and storing in database acts as mysql
class Contact(models.Model):
usn = models.CharField(max_length=50, primary_key=True)
name = models.CharField(max_length=50, default="")
sem = models.CharField(max_length=50, default="")
phone = models.CharField(max_length=50, default="")
email = models.CharField(max_length=50, default="")
def __str__(self):
return self.name
视图.py
from django.shortcuts import render, redirect, HttpResponse
from django.conf import settings
from .models import Contact
# Create your views here.
def index(request):
if request.method=="POST":
usn = request.POST.get('usn','')
name = request.POST.get('name','')
sem = request.POST.get('sem','')
phone = request.POST.get('phone','')
email = request.POST.get('email', '')
if usn and name and sem and phone and email:
contact = Contact(usn = usn, name = name, sem = sem, phone = phone, email = email)
contact.save()
else:
return HttpResponse("Enter all details")
return render (request, 'index.html')
索引.html
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<title>formpage</title>
</head>
<body>
<div class="container mt-3">
<div class="alert alert-warning" role="alert">
MINI PROJECT
</div>
<br>
<!--THE FORM STARTS HERE AND ITS IMPORTANT -->
<form method="POST" action="/">
{% csrf_token %}
<div class="form-group">
<div class="form-group">
<label>USN</label>
<input type="text" class="form-control" id="usn" name="usn" placeholder="ENTER USN" required>
</div>
<div class="form-group">
<label>NAME</label>
<input type="text" class="form-control" id="name" name="name" placeholder="ENTER NAME">
</div>
<div class="form-group">
<label>SEM</label>
<input type="text" class="form-control" id="sem" name="sem" placeholder="ENTER SEM">
</div>
<div class="form-group">
<label>PHONE</label>
<input type="number" class="form-control" id="phone" name="phone" placeholder="ENTER PHONE">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" id="email" aria-describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<button type="submit" class="btn btn-danger">Submit</button>
</form>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</body>
</html>
解决方案
检查 index.html 中的所有名称是否匹配
如果全部匹配,则:
打印以下所有内容以查看哪个字段给您带来了问题
print('1', request.POST[usn])
print('2', request.POST[sem])
....
推荐阅读
- perl - 在 Perl 中更改哈希值的输出
- powershell - 为什么我不能在 Powershell 的远程服务器上读取此文件?
- r - 在 R 中同时计算多列的“动态”函数
- python - 静态方法作为没有实例化的属性
- eclipse - 同一{}部分的代码的背景颜色?[ECLPISE]
- visual-studio - Mathematica 安装:在 Visual Studio 2019 上找不到 Microsoft Visual Studio \VC\bin
- python - Django admin - 用户名字段显示我的电子邮件而不是用户名
- java - 我的对象数组只打印最后输入的值java
- javascript - 根据下拉选择显示内容
- azure - 如何检查我的某些工作项是否有测试用例失败