向已注册django应用程序注册的用户发送电子邮件

问题描述 投票:0回答:1

我正在执行django项目。在django项目中,我有一个用于将用户注册到服务的表单。用户注册后,我应该能够向他们发送促销电子邮件。为了发送电子邮件本身,我正在使用mailchimp。到目前为止,这是我的代码

models.py

class RegistrationModel(models.Model):
    firstName = models.CharField(max_length=200)
    lastName = models.CharField(max_length=200)
    email = models.EmailField(max_length=70)
    phone = models.IntegerField()
    address1 = models.CharField(max_length=200)
    address2 = models.CharField(max_length=200, blank=True)
    city = models.CharField(max_length=200)
    state = models.CharField(max_length=200)
    pincode = models.IntegerField()
    timestamp = models.DateTimeField(auto_now_add=True)

    def publish(self):
        self.save()

    def __str__(self):
        return self.email

forms.py

from .models import RegistrationModel

class RegistrationForm(forms.ModelForm):
    class Meta:
        model = VittalParivar
        widgets = {
            'firstName': forms.TextInput(attrs={'placeholder': 'First Name'}),
            'lastName': forms.TextInput(attrs={'placeholder': 'Last Name'}),
            'email': forms.TextInput(attrs={'placeholder': 'Email'}),
            'phone': forms.TextInput(attrs={'placeholder': 'Phone Number'}),
            'address1': forms.TextInput(attrs={'placeholder': 'Address1'}),
            'address2': forms.TextInput(attrs={'placeholder': 'Address2'}),
            'city': forms.TextInput(attrs={'placeholder': 'City'}),
            'state': forms.TextInput(attrs={'placeholder': 'State'}),
            'pincode': forms.TextInput(attrs={'placeholder': 'Pincode'}),
        }
        fields = ('firstName', 'lastName', 'email', 'phone', 'address1', 'address2', 'city', 'state', 'pincode')

settings.py

MAILCHIMP_API_KEY = 'I have added the api key here'
MAILCHIMP_DATA_CENTER = 'I have added the data center here'
MAILCHIMP_EMAIL_LIST_ID = 'I have added the audience id here'

views.py

from django.conf import settings
from django.shortcuts import render, redirect
from django.core.mail import send_mail
from django.http import HttpResponseRedirect
from .models import RegistrationModel
from .forms import RegistrationForm

import requests, json


MAILCHIMP_API_KEY = settings.MAILCHIMP_API_KEY
MAILCHIMP_DATA_CENTER = settings.MAILCHIMP_DATA_CENTER
MAILCHIMP_EMAIL_LIST_ID = settings.MAILCHIMP_EMAIL_LIST_ID

api_url = f'https://{MAILCHIMP_DATA_CENTER}.api.mailchimp.com/3.0'
members_endpoint = f'{api_url}/lists/{MAILCHIMP_EMAIL_LIST_ID}/members'

def subscribe(email):
    data = {
        "email_address": email,
        "status": 'subscribed'
    }

    r = requests.post(
        members_endpoint,
        auth=("", MAILCHIMP_API_KEY),
        data=json.dumps(data),
    )

    return r.status_code, r.json()

def index(request):
    if request.method == "POST":
        form = RegistrationForm(request.POST)

        if form.is_valid():
            RF_qs = RegistraionModel.objects.filter(email=form.instance.email)
            if RF_qs.exists():
                messages.info(request, "You are already subscribed")
            else:
                subscribe(form.instance.email)
                form.save()

        return HttpResponseRedirect(request.META.get("HTTP_REFERER"))

    else:
        form = RegistraionForm()
        context = {'reg_form': form}
        return render(request, 'index.html', context)

但是当我在应用程序中提交表单时,什么也没有发生,并且mailchimp中的受众也没有被填充。我不确定自己在做什么错。

我正在按照此video创建服务

python django mailchimp
1个回答
0
投票
r = requests.post( members_endpoint, auth=("", MAILCHIMP_API_KEY), json=data, )
© www.soinside.com 2019 - 2024. All rights reserved.