В настоящее время пытаюсь заставить работать почтовую рассылку с django 2.2 и MailChimp. Получил код из видео YouTube, я думал, что я понял, но потом я столкнулся с ошибкой в названии. Я пробовал разные вещи, такие как просто передача данных = данные в функции подписки, но ничего, что я пробовал, не сработало Меня беспокоит то, что на видео все работало очень хорошо, и, поскольку оно не старое, я не думаю, что django значительно изменилось. Буду признателен за любую помощь / объяснение.
views.py (не все импортные)
from django.conf import settings
from .forms import EmailSignupForm
from django.http import HttpResponseRedirect
import json
import requests
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 = 'https://{dc}.api.mailchimp.com/3.0'.format(dc=MAILCHIMP_DATA_CENTER)
members_endpoint = '{api_url}/lists/{list_id}/members'.format(
api_url=api_url,
list_id=MAILCHIMP_EMAIL_LIST_ID
)
def subscribe(email):
data = {
"email_address": email,
"status": "subscribed",
}
print(data)
print(data[])
r = requests.post(
members_endpoint,
auth=("", MAILCHIMP_API_KEY),
data=json.dumps(data), # I think the error is caused here
)
return r.status_code, r.json()
def email_list_signup(request):
form = EmailSignupForm(request.POST or None)
if request.method == "POST":
if form.is_valid():
email_signup_qs = Signup.objects.filter(email=form.instance.email)
if email_signup_qs.exists():
messages.info(request, "You are already subscribed")
else:
subscribe(form.instance.email)
messages.success(request, "You have subscribed successfully!")
form.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
class HomeView(ListView):
template_name = "home.html"
model = Post
form_class=EmailSignupForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
form = EmailSignupForm()
context['form'] = form
return context
def get_queryset(self):
return Post.objects.all().order_by('-published_date')[:5]
urls.py
from . import views
from django.conf.urls import url
urlpatterns = [
url(r'^email-signup$', views.subscribe,name="email-signup"),
]
forms.py
class EmailSignupForm(forms.ModelForm):
email = forms.EmailField(widget=forms.TextInput(attrs={
"type": "email",
"name": "email",
"id": "email",
"placeholder": "Type your email address",
}), label="")
class Meta:
model = Signup
fields = ('email', )
форма в home. html
{% block emailsignup %}
<div class="enter_email sidebar_element">
<p class="white">Get all new posts E-Mailed to you! No Ads, we promise.</p>
<form class="form " method='GET' action="{% url 'blog:email-signup' %}">
{% csrf_token %}
<!-- <input class="form-control " type="text" placeholder="Your email" name="email"> -->
{{ form }}
<button method="POST" class="btn btn-primary w-100 my-3" type="submit">Enter</button>
</form>
</div>
{% endblock %}
если какой-либо код отсутствует, пожалуйста, дайте мне знать Спасибо большое за помощь.