有人能帮忙吗。我目前正在通过一个项目,在那里我试图创建一个虚拟餐厅的网站,包括在线订票表。我收到以下错误消息: TypeError at /bookings/ 'OnlineForm‘对象不可调用
我看过很多视频,读过Django文档,我仍然不知道自己做错了什么。我对Django很陌生,所以这一切都是我的学习。你能给出的任何建议都会受到极大的感谢。提前谢谢你
这是我的密码:
view.py:
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
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.nameforms.py:
from django.forms import ModelForm
from .models import Booking
class OnlineForm(ModelForm):
class Meta:
model = Booking
fields = '__all__'urls.py:
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:
{% extends "base.html" %}
{% block content %}
<form method="POST">
{% csrf_token %}
{{form}}
<button id="submit-button" class="btn btn-success">Book Now</button>
</form>
{%endblock%}发布于 2022-06-28 13:24:02
根据django描述的说法,对于FormView,您没有定义自己的POST方法的选项。将您的观点重写为
class BookingForm(FormView):
template_name = 'bookings.html'
form_class = OnlineForm会解决这个问题。尽管您需要添加一个form_valid方法来定义在提交有效数据的表单时要执行的操作。
https://stackoverflow.com/questions/72783848
复制相似问题