django - 集成时事通讯注册的 Django 服务器错误
问题描述
我在将我的 mailchimp 注册集成到我的 Django 服务器时遇到问题。我使用 Django 作为服务器,然后使用 react native 将它连接到我的前端。转到此网址(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 方法来订阅用户。
这是我的意见.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"
})
网址.py
urlpatterns = [
path('', include(router.urls)),
path('subscribe_email', MailSubscriptionAPIView.as_view(), name= 'subscribe-email' ),
]
任何帮助表示赞赏!
解决方案
在创建GenricAPIView
时,您应该提供一个序列化程序类。序列化器可以在里面以多种方式使用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 类应该是这样的:
from rest_framework.serializers import ModelSerializer
# Considering that you have a model called Mail
class MailSerializer(ModelSerializer):
class Meta:
model = Mail
fields = "__all__"
推荐阅读
- sql-server - 检查 SQL Server 和 ASP.NET MVC 的约束问题
- c++ - get 方法不会正确“获取”静态数组
- c++ - 在 openmp 并行块中使用预编译器语句避免未使用的变量警告
- c++ - 复杂类型数组的静态初始化
- r - 绘制连续变量离散
- python - 如何使用熊猫数据框中其他列的条件语句对列中的值求和?
- apache-flink - 如何在 Flink 中跳过损坏的消息?
- elasticsearch - 使用elasticsearch和logstash后如何进行大数据建模?
- debian - 无法通过 init.d 正确启动 aftpd
- html - 如何在bash中触发youtube无限滚动