Django addBooks()得到一个意外的关键字参数';名称';
我想从用户那里获取数据,并使用django将其保存到数据库中。我试图解决它。但我无法解决这个问题,也没有在互联网上找到任何有效的解决方案 我得到这个错误:- My views.py文件是:-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")
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
notcamelCase
而且它们不应该有动词,模型名应该是单数的,所以它应该是Book
而不是addBooks
。使用此选项后,在/addBooks处获取“MultiValueDictKeyError”。这是一种正确的方法。查看此项了解更多信息。顺便说一下,更改模型名称应该会更好。请检查我的评论,它指出了各种约定,名称addBooks
breaks.@AbdulAzizBarkat请检查更新的答案