Python 属性错误位于/products/1/buy/&x27;订单';对象没有属性';保存';
我正在尝试建立一个django表单,以便在我的电子商务网站上下订单。但是,当我按下Python 属性错误位于/products/1/buy/&x27;订单';对象没有属性';保存';,python,django,Python,Django,我正在尝试建立一个django表单,以便在我的电子商务网站上下订单。但是,当我按下下订单按钮时,会出现以下回溯错误: Internal Server Error: /products/1/buy/ Traceback (most recent call last): File "C:\Users\Dell\Desktop\Django\apnibakery\venv\lib\site-packages\django\core\handlers\exception.py",
下订单
按钮时,会出现以下回溯错误:
Internal Server Error: /products/1/buy/
Traceback (most recent call last):
File "C:\Users\Dell\Desktop\Django\apnibakery\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\Dell\Desktop\Django\apnibakery\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Dell\Desktop\Django\apnibakery\bakery\apnibakeryy\views.py", line 33, in buy
form.save()
AttributeError: 'OrderForm' object has no attribute 'save'
[07/Dec/2020 14:06:34] "POST /products/1/buy/ HTTP/1.1" 500 64996
这是我的订单
:
class OrderForm(forms.Form):
name = forms.CharField(max_length=30)
email = forms.EmailField()
address = forms.CharField(widget=forms.Textarea())
zip_code = forms.CharField(min_length=6,max_length=6)
处理订单的My view函数:
def buy(request,id):
product = Product.objects.get(id=id)
form = OrderForm()
if request.method == 'POST':
form = OrderForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponse("Your order has been successfully placed!!")
context = {
'form':form,
'product':product,
}
return render(request, 'buy_page.html',context)
我以前从未遇到过这个错误。有人能帮我吗?你应该使用
表单。ModelForm
而不是表单。表单
class OrderForm(forms.ModelForm):
name = forms.CharField(max_length=30)
email = forms.EmailField()
address = forms.CharField(widget=forms.Textarea())
zip_code = forms.CharField(min_length=6, max_length=6)
类订单(forms.ModelForm):
name=forms.CharField(最大长度=30)
email=forms.EmailField()
address=forms.CharField(widget=forms.Textarea())
zip\u code=forms.CharField(最小长度=6,最大长度=6)
AForm
没有.save()
方法。不清楚这意味着什么,因为例如,表单
不是针对模型定制的。例如,它可以不在数据库中创建或更新记录
但是,您可以自己实现save()
方法。例如,将发送电子邮件的方法:
class OrderForm(forms.Form):
# …
def save(self):
cleaned_data = self.cleaned_data
# …
有关发送电子邮件的更多信息,请参阅。
订单是一个表单,而不是模型表单,因此它没有.save()
方法。但是不清楚您是否有订单
模型,或者如何保存表单。我没有订单模型。那么我该如何保存表单呢?那么到底应该在数据库中创建哪些记录等呢?表格不能自动猜到。我不明白。什么意思?
from django.core.mail import send_mail
class OrderForm(forms.Form):
# …
def save(self):
cleaned_data = self.cleaned_data
send_mail(
'Your order',
"The order with name {cleaned_data['name']} and zip {cleaned_data['zip']}",
None,
[cleaned_data['email']],
fail_silently=False,
)