0
我有一個基本表單,用於捕獲用戶提交的數據,並通過Django的郵件模塊通過電子郵件發送。傳遞給send_mail的表單數據的Get_FOO_display方法
但我希望電子郵件的主題和消息包含order_type選項的人類可讀版本。
如何修改我的視圖以顯示此信息?
這裏是我的形式:
from django import forms
from django.contrib.localflavor.us.forms import USPhoneNumberField
import datetime
class OrderForm(forms.Form):
CAKE = 'CA'
CHEESECAKE = 'CH'
COFFEECATERING = 'CO'
BREAKFASTPLATTER = 'BR'
COOKIEPLATTER = 'CP'
GOURMETDESSERTSPLATTER = 'GD'
ORDER_TYPE_CHOICES = (
(CAKE, 'Cake'),
(CHEESECAKE, 'Cheesecake'),
(COFFEECATERING, 'Coffee catering'),
(BREAKFASTPLATTER, 'Breakfast platter'),
(COOKIEPLATTER, 'Cookie platter'),
(GOURMETDESSERTSPLATTER, 'Gourmet desserts platter'),
)
name = forms.CharField(max_length=100, required=True, help_text='100 characters max.')
phone_number = USPhoneNumberField(required=True, help_text='This will allow us to contact you in case of questions regarding your order. Please include your area code.')
email_address = forms.EmailField(required=True, help_text='We will e-mail you to confirm we have received your order, and submitted it to our bakers and baristas.')
date_needed = forms.SplitDateTimeField(required=True, help_text='We can only accept online orders that are placed three days in advance.')
order_description = forms.CharField(required=True, help_text='Please describe your order.')
order_type = forms.ChoiceField(required=True, choices=ORDER_TYPE_CHOICES)
這是我的觀點:
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from order_form.forms import OrderForm
def order(request):
if request.method == 'POST':
form = OrderForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
order_description = form.cleaned_data['order_description']
phone_number = form.cleaned_data['phone_number']
email_address = form.cleaned_data['email_address']
date_needed = form.cleaned_data['date_needed']
order_type = form.cleaned_data['order_type']
subject = "Order placed for %s by %s" % (order_type, name)
message = "Name: %s\nPhone number: %s\nEmail address: %s\nOrder description: %s\nDate needed: %s" % (name, phone_number, email_address, order_description, date_needed)
from django.core.mail import send_mail
send_mail(subject, message, '[email protected]', ['[email protected]', email_address])
return HttpResponseRedirect('thanks/')
else:
form = OrderForm()
return render(request, 'order_form/order.html', {
'form': form,
})
我不是存儲形式數據在模型中。在這種情況下它將如何工作? –
將它置於form.is_valid()的當前邏輯中;從那裏打電話。您不需要將表單數據保存在模型中。您從清理的數據中捕獲order_type。將它傳遞給上面的方法。然後在主題字符串中使用返回的字符串代替當前的order_type。 – professorDante