addBooks() 得到了一个意外的关键字参数“名称”

时间:2021-04-09 05:50:25

标签: django django-models django-views django-forms django-templates

我想从用户那里获取数据并使用 django 将其保存到数据库中。已经尝试解决了。但我无法解决这个问题,也没有在互联网上找到任何可行的解决方案。

我收到此错误:- enter image description here

我的 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>

这是完整的错误回溯:- Full error traceback

2 个答案:

答案 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']

并对所有输入字段执行此操作。

相关问题