我想从用户那里获取数据并使用 django 将其保存到数据库中。已经尝试解决了。但我无法解决这个问题,也没有在互联网上找到任何可行的解决方案。
我的 views.py 文件是:-
from django.shortcuts import render, HttpResponse
from home.models import addBooks
def index(request):
return render(request, "index.html")
def checkBooks(request):
return render(request, "checkBooks.html")
def contactUs(request):
return render(request, "contactUs.html")
def addBooks(request):
name = request.POST.get('name', False)
email = request.POST.get('email', False)
bookName = request.POST.get('bookName', False)
authorName = request.POST.get('authorName', False)
desc = request.POST.get('desc', False)
book = addBooks(name=name, email=email,bookName = bookName, authorName = authorName, desc = desc)
book.save()
return render(request, "addBooks.html")
我的models.py文件是:-
from django.db import models
class addBooks(models.Model):
name = models.CharField(max_length=122)
email = models.CharField(max_length=122)
bookName = models.CharField(max_length=122)
authorName = models.CharField(max_length = 122)
desc = models.TextField()
这是 addBooks.html(这里我使用 from 从用户那里获取数据):-
<form method="POST" action = "/addBooks">
{% csrf_token %}
<div class = "container">
<h1 class = "text-center"> Add Books </h1>
<div class="mb-3">
<label class="form-label">Your Name</label>
<input type="text" name = "name" class="form-control">
<div class="form-text"></div>
<div class="mb-3">
<label class="form-label">Email Address</label>
<input type="email" name = "email" class="form-control">
<div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
</div>
<div class="mb-3">
<label class="form-label">Book Name</label>
<input type="text" name = "bookName" class="form-control">
<div class="form-text"></div>
</div>
<div class="mb-3">
<label class="form-label">Author Name</label>
<input type="text" name = "authorName" class="form-control">
<div class="form-text"></div>
</div>
<div class="mb-3">
<label class="form-label">Description Of The Book</label>
<input type="text" name = "desc" class="form-control">
<div class="form-text"></div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
答案 0 :(得分:2)
问题在于您的函数名称与模型名称相同。
addBooks 是您的模型名称,也是您的函数名称。 两者不能相同
def addBooks_add(request): #change function name
name = request.POST.get('name', False)
email = request.POST.get('email', False)
bookName = request.POST.get('bookName', False)
authorName = request.POST.get('authorName', False)
desc = request.POST.get('desc', False)
book = addBooks(name=name, email=email,bookName = bookName, authorName = authorName, desc = desc)
book.save()
return render(request, "addBooks.html")
或者试试这个
from home.models import addBooks as addBooksCreate
def addBooks(request):
name = request.POST.get('name', False)
email = request.POST.get('email', False)
bookName = request.POST.get('bookName', False)
authorName = request.POST.get('authorName', False)
desc = request.POST.get('desc', False)
book = addBooksCreate(name=name, email=email,bookName = bookName, authorName = authorName, desc = desc)
book.save()
答案 1 :(得分:-1)
在 addBooks 函数中,您以错误的方式获取 name 的值您必须尝试这个
name = request.POST['name']
并对所有输入字段执行此操作。