python - /products/1/buy/ 'OrderForm' 对象的 AttributeError 没有属性 'save'
问题描述
我正在尝试构建一个 django 表单以在我的电子商务网站中下订单。但是,当我按下Place Order
按钮时,我得到了这个回溯错误:
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
这是我的OrderForm
:
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)
我处理订单的视图函数:
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)
我以前从未遇到过这个错误。有人可以帮我吗?
解决方案
AForm
没有.save()
方法。尚不清楚这意味着什么,因为Form
例如 a 不是针对模型量身定制的。因此,它可以例如不创建或更新数据库中的记录。
但是,您可以save()
自己实现一个方法。例如,然后将发送电子邮件的方法:
class OrderForm(forms.Form):
# …
def save(self):
cleaned_data = self.cleaned_data
# …
这cleaned_data
是一个将字段名称( 、 等)映射name
到email
相应值的字典。
因此,您可以发送一封基本的电子邮件,例如:
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,
)
有关发送电子邮件的更多信息,请参阅Django 文档中的部分。
推荐阅读
- reactjs - 如何解决 react spring boot CORS 问题?
- javascript - 如何在 javascript 中定义异步静态受保护的类成员?
- c++ - Fbx SDK 上轴导入问题
- c# - 移动到另一个 PageView 时,如何在 Xamarin.Form 移动应用程序的后台运行功能而不停止它?
- reactjs - 选择器是否会导致 Redux 工具包中不相关的组件重新渲染?
- java - quarkus.uuid 作为表达式在 application.properties 中不起作用
- spring-boot - Springfox 中的授权范围
- python - 如何简化需要相同任务但要求不同参数的两个代码?
- linux - xdotool redhat 7 创建 xdo 实例错误
- etl - DBT docs - 如何更改默认标题和默认文档生成的 dbt 徽标