Django Отправка модельной формы по электронной почте - PullRequest
0 голосов
/ 08 мая 2020

Я создал сайт, на котором мои технические специалисты отправляют свой инвентарь, используя модельные формы. Все работает по назначению, но я хотел бы добавить функцию отправки всей формы по электронной почте, когда они отправляют свой инвентарь. Это позволило бы моей команде инвентаризации проверять подсчеты без необходимости входа в систему и проверки веб-сайта.

Вот мой view.py, я знаю, что он работает, если я удалю биты электронной почты и сохраню в свои модели. В настоящее время возвращает ошибку: объект 'dict' не имеет атрибута 'splitlines'

    form = Inventory_Form()
    if request.method == 'POST':
        form = Inventory_Form(request.POST)
        tech_field = form.save(commit=False)
        tech_field.technician = request.user
        tech_field.save()
        if form.is_valid():
            form.save()
            name = form.cleaned_data['initials_date']
            from_email = 'operations@imbadatthis.com'
            subject = 'Weekly Inventory', form.cleaned_data['initials_date']
            message = form.cleaned_data
            try:
                send_mail(subject, message, from_email, ['myemail@n00b.com'], name)
            except BadHeaderError:
                return HttpResponse('Invalid header found.')

            return response, redirect('inventory_submitted')

    return render(request, 'inventory.html', {'form': form})

Не лучше ли сохранить форму в CSV, а затем прикрепить ее как электронное письмо? Я посмотрел на это, и с этой деталью тоже были проблемы.

1 Ответ

1 голос
/ 08 мая 2020

Я предполагаю, что ошибка возникает в send_mail из-за

 message = form.cleaned_data

Потому что это dict, а send_mail из django ожидает, что сообщение будет string .

Вы должны преобразовать dict в строку.

Может быть, это помогает сделать красивое письмо. ( документация )

...