我正在执行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创建服务
r = requests.post(
members_endpoint,
auth=("", MAILCHIMP_API_KEY),
json=data,
)