首页 文章

AttributeError:'BookForm'对象没有属性'get'

提问于
浏览
0

错误:AttributeError:'BookForm'对象没有属性'get' . 我无法调试问题 . 请提前帮忙 . 谢谢

forms.py

from django import forms
from .models import Book

class BookForm(forms.Form):
class Meta:
    model = Book
    fields = ['title', 'sub_title', 'author', 'image', 'price', 'description', 'ISBN', 'number_of_pages','dimensions', 'interior_pages','binding','availability','genre']

urls.py

from django.urls import path
from . import views
urlpatterns = [
    path('',views.BookForm, name = 'bookform' ),
]

views.py

从django.shortcuts导入渲染,从.forms导入BookForm重定向

def bookview(request):
    if request.method == 'POST':
        form = BookForm(request.post)
        if form.is_valid():
            model_instance = form.save()
            model_instance.save()
            return redirect('/')
    else:
        form = BookForm()
        return render(request,'book.html',{'myform':form})

模板

<html>
<head>
<title>edit</title>
</head>
<body>

<form method="post" >
{% csrf_token %}
{{form.as_p}}

<input type="submit" value="ok">
</form>
</body>
</html>

1 回答

  • 3

    在url模式中,您需要将 views 与url路径链接 . 但是你在这里使用表单类,将 urls.py 更改为:

    urlpatterns = [
        path('', views.bookview, name='bookform'),
    ]
    

    另外要使用自动生成的字段,您需要使用 ModelForm 作为表单的基类:

    class BookForm(forms.ModelForm):
        class Meta:
            model = Book
            fields = ['title', 'sub_title', 'author', 'image', 'price', 'description', 'ISBN', 'number_of_pages','dimensions', 'interior_pages','binding','availability','genre']
    

    UPD

    您在视图的上下文中有 myform 变量,因此您需要在模板中使用它而不是 form

    {{myform.as_p}}
    

相关问题