【发布时间】:2021-01-18 10:12:46
【问题描述】:
大家好,我有一个结帐页面,其中包含一些字段和另外两个用于条带身份验证的字段。当我提交我的表单时,它没有被添加到数据库中,而是条带注册付款。我是否需要删除这两个字段才能使用 form(request.POST) 我的模型
class ShippingAddress(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True)
recipient = models.TextField(max_length=50, null=True)
city = models.TextField(max_length=50, null=True)
country = models.TextField(max_length=50, null=True)
zip_code = models.TextField(max_length=15, null=True)
phone = models.TextField(max_length=10, null=True)
email = models.EmailField(max_length=30, null=True)
adress = models.TextField(max_length=100, null=True)
transaction_id= models.TextField(max_length=100,null=True)
invoice = models.BooleanField(default=False, blank=True, null=True)
invoiceRecipient = models.TextField(max_length=50, null=True, blank=True)
invoiceAdress = models.TextField(max_length=50, null=True, blank=True)
invoiceZip = models.TextField(max_length=15, null=True, blank=True)
invoiceCity = models.TextField(max_length=50, null=True, blank=True)
invoiceNip = models.TextField(max_length=15, null=True, blank=True)
processed = models.BooleanField(default=False, blank=True, null=True)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.adress)
forms.py
class CustomerShipp(ModelForm):
invoice = forms.BooleanField(widget=forms.CheckboxInput(attrs={'class':'checkboxInvoice',}),required=False)
class Meta:
model = ShippingAddress
fields = [ 'city', 'country','zip_code','adress',
'phone','email','recipient','invoice','invoiceRecipient',
'invoiceAdress','invoiceZip','invoiceCity','invoiceNip','transaction_id','customer','order']
exclude =['processed', 'date_added']
widgets ={
'city' :forms.TextInput(attrs={'class':'shippForm'}),
'country' :forms.TextInput(attrs={'class':'shippForm'}),
'zip_code' :forms.TextInput(attrs={'class':'shippForm'}),
'adress' :forms.TextInput(attrs={'class':'shippForm'}),
'email' :forms.TextInput(attrs={'class':'shippForm'}),
'recipient' :forms.TextInput(attrs={'class':'shippForm'}),
'phone' :forms.TextInput(attrs={'class':'shippForm'}),
'invoiceRecipient':forms.TextInput(attrs={'class':'shippForm'}),
'invoiceAdress' :forms.TextInput(attrs={'class':'shippForm'}),
'invoiceZip' :forms.TextInput(attrs={'class':'shippForm'}),
'invoiceCity' :forms.TextInput(attrs={'class':'shippForm'}),
'invoiceNip' :forms.TextInput(attrs={'class':'shippForm'}),
'transaction_id' :forms.TextInput(attrs={'type':'hidden'}),
'customer' :forms.TextInput(attrs={'type':'hidden'}),
'order' :forms.TextInput(attrs={'type':'hidden'}),
}
我的看法
from .forms import *
def processOrder(request):
if request.method == "POST" and request.user.is_authenticated:
order, created = Order.objects.get_or_create(customer=customer, complete=False)
order.complete = True
order.transaction_id = transaction_id
order.save()
transaction_id = datetime.datetime.now().timestamp()
customerOnWebsite = request.user.customer
forms = CustomerShipp(request.POST)
print(request.POST)
print(forms.is_valid())
if forms.is_valid():
adding = forms.save(commit=False)
adding.customer = customerOnWebsite
adding.order = order
adding.transaction_id = transaction_id
adding.save()
return render(request,'policy.html')
查询字典
模板
<form action="{% url 'processOrder' %}" method="post" id="payment-form">
{% csrf_token %}
<div class="recipientAdressWrapper">
<div class="form-group">
{{ forms.recipient }}
</div>
<div class="form-group">
{{ forms.adress }}
</div>
<div class="form-group">
{{ forms.zip_code }}
</div>
<div class="form-group">
{{ forms.city }}
</div>
<div class="form-group">
{{ forms.country }}
</div>
<div class="form-group">
{{ forms.email }}
</div>
<div class="form-group">
{{ forms.phone }}
</div>
<div class="invoiceWrapper">
<div class="invoiceToggle">
{{ forms.invoice }}
</div>
<div class="invoiceFromWrapper">
<div class="form-group">
{{ forms.invoiceRecipient }}
</div>
<div class="form-group">
{{ forms.invoiceAdress }}
</div>
<div class="form-group">
{{ forms.invoiceZip }}
</div>
<div class="form-group">
{{ forms.invoiceCity }}
</div>
<div class="form-group">
{{ forms.invoiceNip }}
</div>
</div>
</div>
</div>
<div class="widthBtnCheckout">
<button type="submit" href="" class="btn btn-sm animated-button thar-three">{% trans "Zakończ i zapłać" %}</button></div>
</form>
最后两个以payment开头的字段是通过stripe.js添加的
【问题讨论】:
-
能否请您出示您的模板代码
-
是的,我已经添加了。你知道为什么表单无效吗?
-
这是你的完整模板吗???表单标签和 csrf 令牌在哪里??
-
现在可以看到了
-
请在您提交表单的地方添加
view
标签: django django-models django-forms