集成时事通讯注册的 Django 服务器错误
Django Server Error integrating Newsletter signup
我在将我的 mailchimp 注册集成到我的 Django 服务器时遇到问题。我将 Django 用作服务器,然后使用 React Native 将其连接到我的前端。转到此 url (http://127.0.0.1:8000/subscribe_email) 时出现以下错误:
AssertionError at /subscribe_email
'MailSubscriptionAPIView' should either include a `serializer_class` attribute, or override the `get_serializer_class()` method.
我做错了什么?我只想能够使用 post 方法来订阅用户。
这是我的 views.py
# Mailchimp Settings
MAILCHIMP_API_KEY = settings.MAILCHIMP_API_KEY
MAILCHIMP_DATA_CENTER = settings.MAILCHIMP_DATA_CENTER
MAILCHIMP_LIST_ID = settings.MAILCHIMP_EMAIL_LIST_ID
class MailSubscriptionAPIView(GenericAPIView):
def subscribe_email(email):
mailchimp = Client()
mailchimp.set_config({
"api_key": MAILCHIMP_API_KEY,
"server": MAILCHIMP_DATA_CENTER
})
member_info = {
"email_address": email,
"status": "subscribed",
}
try:
mailchimp.lists.add_list_member(MAILCHIMP_LIST_ID, member_info)
except ApiClientError as error:
print(error.text)
def post(self, request, *args, **kwargs):
email = request.data['email']
MailSubscriptionAPIView.subscribe_email(email)
return Response({
"status_code": status.HTTP_200_OK,
"message": "Mail added to mailchimp"
})
urls.py
urlpatterns = [
path('', include(router.urls)),
path('subscribe_email', MailSubscriptionAPIView.as_view(), name= 'subscribe-email' ),
]
感谢任何帮助!
创建 GenricAPIView
时,您应该提供序列化程序 class。
Serializer在GenricAPIView
内部可以有多种使用方式,一个简单的例子是:
class MailSubscriptionAPIView(GenericAPIView):
# Here, MailSerializer is a made-up name
# You should create a serializer class that serializes
# the model or some custom fields that you need
serializer_class = MailSerializer
def subscribe_email(email):
mailchimp = Client()
mailchimp.set_config({
"api_key": MAILCHIMP_API_KEY,
"server": MAILCHIMP_DATA_CENTER
})
member_info = {
"email_address": email,
"status": "subscribed",
}
try:
mailchimp.lists.add_list_member(MAILCHIMP_LIST_ID, member_info)
except ApiClientError as error:
print(error.text)
def post(self, request, *args, **kwargs):
email = request.data['email']
MailSubscriptionAPIView.subscribe_email(email)
return Response({
"status_code": status.HTTP_200_OK,
"message": "Mail added to mailchimp"
})
考虑到您有一个名为 Mail
的模型,Serializer class 应该是这样的:
from rest_framework.serializers import ModelSerializer
# Considering that you have a model called Mail
class MailSerializer(ModelSerializer):
class Meta:
model = Mail
fields = "__all__"
我在将我的 mailchimp 注册集成到我的 Django 服务器时遇到问题。我将 Django 用作服务器,然后使用 React Native 将其连接到我的前端。转到此 url (http://127.0.0.1:8000/subscribe_email) 时出现以下错误:
AssertionError at /subscribe_email
'MailSubscriptionAPIView' should either include a `serializer_class` attribute, or override the `get_serializer_class()` method.
我做错了什么?我只想能够使用 post 方法来订阅用户。
这是我的 views.py
# Mailchimp Settings
MAILCHIMP_API_KEY = settings.MAILCHIMP_API_KEY
MAILCHIMP_DATA_CENTER = settings.MAILCHIMP_DATA_CENTER
MAILCHIMP_LIST_ID = settings.MAILCHIMP_EMAIL_LIST_ID
class MailSubscriptionAPIView(GenericAPIView):
def subscribe_email(email):
mailchimp = Client()
mailchimp.set_config({
"api_key": MAILCHIMP_API_KEY,
"server": MAILCHIMP_DATA_CENTER
})
member_info = {
"email_address": email,
"status": "subscribed",
}
try:
mailchimp.lists.add_list_member(MAILCHIMP_LIST_ID, member_info)
except ApiClientError as error:
print(error.text)
def post(self, request, *args, **kwargs):
email = request.data['email']
MailSubscriptionAPIView.subscribe_email(email)
return Response({
"status_code": status.HTTP_200_OK,
"message": "Mail added to mailchimp"
})
urls.py
urlpatterns = [
path('', include(router.urls)),
path('subscribe_email', MailSubscriptionAPIView.as_view(), name= 'subscribe-email' ),
]
感谢任何帮助!
创建 GenricAPIView
时,您应该提供序列化程序 class。
Serializer在GenricAPIView
内部可以有多种使用方式,一个简单的例子是:
class MailSubscriptionAPIView(GenericAPIView):
# Here, MailSerializer is a made-up name
# You should create a serializer class that serializes
# the model or some custom fields that you need
serializer_class = MailSerializer
def subscribe_email(email):
mailchimp = Client()
mailchimp.set_config({
"api_key": MAILCHIMP_API_KEY,
"server": MAILCHIMP_DATA_CENTER
})
member_info = {
"email_address": email,
"status": "subscribed",
}
try:
mailchimp.lists.add_list_member(MAILCHIMP_LIST_ID, member_info)
except ApiClientError as error:
print(error.text)
def post(self, request, *args, **kwargs):
email = request.data['email']
MailSubscriptionAPIView.subscribe_email(email)
return Response({
"status_code": status.HTTP_200_OK,
"message": "Mail added to mailchimp"
})
考虑到您有一个名为 Mail
的模型,Serializer class 应该是这样的:
from rest_framework.serializers import ModelSerializer
# Considering that you have a model called Mail
class MailSerializer(ModelSerializer):
class Meta:
model = Mail
fields = "__all__"