Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django addBooks()得到一个意外的关键字参数';名称';_Django_Django Models_Django Views_Django Forms_Django Templates - Fatal编程技术网

Django addBooks()得到一个意外的关键字参数';名称';

Django addBooks()得到一个意外的关键字参数';名称';,django,django-models,django-views,django-forms,django-templates,Django,Django Models,Django Views,Django Forms,Django Templates,我想从用户那里获取数据,并使用django将其保存到数据库中。我试图解决它。但我无法解决这个问题,也没有在互联网上找到任何有效的解决方案 我得到这个错误:- My views.py文件是:- from django.shortcuts import render, HttpResponse from home.models import addBooks def index(request): return render(request, "index.html")

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

我得到这个错误:-

My 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")
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()
我的models.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")
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从用户处获取数据):-


{%csrf_令牌%}
添加书籍
你的名字
电子邮件地址
我们永远不会与其他人共享您的电子邮件。
书名
作者姓名
书的描述
提交

在addBooks函数中,您以错误的方式获取名称的值,您必须尝试此操作

name = request.POST['name']

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

问题在于函数名,它与模型名相同

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()

你能分享完整的错误追踪吗?我已经编辑了“完整错误追踪”的问题。@KapilSharma你的模型和视图都被命名为
addBooks
,所以当你写
book=addBooks(name=name,…)
时,你实际上是在调用你的视图。注意:理想情况下,类名应该是
PascalCase
not
camelCase
而且它们不应该有动词,模型名应该是单数的,所以它应该是
Book
而不是
addBooks
。使用此选项后,在/addBooks处获取“MultiValueDictKeyError”。这是一种正确的方法。查看此项了解更多信息。顺便说一下,更改模型名称应该会更好。请检查我的评论,它指出了各种约定,名称
addBooks
breaks.@AbdulAzizBarkat请检查更新的答案