"получатель" из формы в письме - PullRequest
0 голосов
/ 15 января 2010

У меня очень простое почтовое приложение. Класс форм:

class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    subject = forms.CharField(max_length=100)
    sender = forms.EmailField()
    recipient_list = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)
    cc_myself = forms.BooleanField(initial=True)

Функция просмотра выглядит следующим образом:

def contact_name(request, id):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid():
        name = form.cleaned_data['name']
        subject = form.cleaned_data['subject']
        message = form.cleaned_data['message']
        sender = form.cleaned_data['sender']
        cc_myself = form.cleaned_data['cc_myself']

        recipients = ['dennis@themenace.com']
        if cc_myself:
            recipients.append(sender)

        from django.core.mail import send_mail
        send_mail(subject, message, sender, recipients)
        return HttpResponseRedirect('/') # Redirect after POST
else:
    a=Entry.objects.get(pk=id)
    form = ContactForm(instance=a) # An unbound form
return render_to_response('email.html', {
    'form': form,
})

Пока я указываю получателя в представлении, у меня нет проблем. Однако я хочу, чтобы сообщение было отправлено на адрес (а), указанный в поле формы "список получателей". Когда я структурирую код вида так:

recipients = form.cleaned_data['recipient_list']
            if cc_myself:
                recipients.append(sender)

            from django.core.mail import send_mail
            send_mail(subject, message, sender, recipients)
            return HttpResponseRedirect('/') # Redirect after POST

или

recipients = request.POST.get('recipient_list', '')
                if cc_myself:
                    recipients.append(sender)

Я получаю сообщение об ошибке "У объекта 'Unicode' нет атрибута 'append'". Короче говоря, это не работает. Что я делаю не так?

1 Ответ

0 голосов
/ 15 января 2010

Поскольку recipient_list является EmailField, он очищается в Unicode. Но вы пытаетесь обработать результат как список. Очевидно, создайте из него список, и все будет прекрасно:

recipients = [form.cleaned_data['recipient_list']]
if cc_myself:
    recipients.append(sender)

... но на самом деле вы должны вызывать поле recipient, а не recipient list, поскольку можно ввести только 1.

...