首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置在线预订表单,获取此错误- TypeError at /bookings/ 'OnlineForm‘对象不可调用

设置在线预订表单,获取此错误- TypeError at /bookings/ 'OnlineForm‘对象不可调用
EN

Stack Overflow用户
提问于 2022-06-28 09:21:50
回答 1查看 36关注 0票数 0

有人能帮忙吗。我目前正在通过一个项目,在那里我试图创建一个虚拟餐厅的网站,包括在线订票表。我收到以下错误消息: TypeError at /bookings/ 'OnlineForm‘对象不可调用

我看过很多视频,读过Django文档,我仍然不知道自己做错了什么。我对Django很陌生,所以这一切都是我的学习。你能给出的任何建议都会受到极大的感谢。提前谢谢你

这是我的密码:

view.py:

代码语言:javascript
复制
class BookingForm(FormView):
    form_class = OnlineForm()
    args = {}
    def booking_view(self, request):
        if request.method == 'POST':
            form = OnlineForm(request.POST)
        
        return render(request, 'bookings.html')

models.py

代码语言:javascript
复制
OCCASION_CHOICE = (
    ('Birthday', 'BIRTHDAY'),
    ('Anniversary', 'ANNIVERSARY'),
    ('Graduation', 'GRADUATION'),
    ('Communion', 'COMMUNION'),
    ('Confirmation', 'CONFIRMATION'),
    ('Christening', 'CHRISTENING'),
    ('Date Night', 'DATE NIGHT'),
)

class Booking(models.Model):
    name = models.CharField(max_length=50)
    email_address = models.EmailField()
    phone = models.IntegerField()
    number_of_people = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)],default='1', help_text='For parties of more than 10, please call us on 021 4569 782')
    date = models.DateField()
    time = models.TimeField()
    occasion = models.CharField(max_length=100, choices=OCCASION_CHOICE, default='Birthday')

    def __str__(self):
        return self.name

forms.py:

代码语言:javascript
复制
from django.forms import ModelForm
from .models import Booking


class OnlineForm(ModelForm):
    class Meta:
        model = Booking
        fields = '__all__'

urls.py:

代码语言:javascript
复制
from . import views
from .views import BookingForm
from django.urls import path

app_name = 'bookingsystem'


urlpatterns = [
    path('', views.Home.as_view(), name='home'),
    path('bookings/', BookingForm.as_view(), name='bookings'),
    path('menus/', views.Menus.as_view(), name='menus'),
    path('edit_bookings', views.editBooking.as_view(), name='edit_bookings'),
]

bookings.html:

代码语言:javascript
复制
{% extends "base.html" %}

{% block content %}

<form method="POST">
    {% csrf_token %}
    {{form}}
    
   <button id="submit-button" class="btn btn-success">Book Now</button>
</form>

{%endblock%}
EN

回答 1

Stack Overflow用户

发布于 2022-06-28 13:24:02

根据django描述的说法,对于FormView,您没有定义自己的POST方法的选项。将您的观点重写为

代码语言:javascript
复制
class BookingForm(FormView):
    template_name = 'bookings.html'
    form_class = OnlineForm

会解决这个问题。尽管您需要添加一个form_valid方法来定义在提交有效数据的表单时要执行的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72783848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档