Django Rest框架联系我们表单

Django Rest框架联系我们表单,django,django-rest-framework,Django,Django Rest Framework,如何使用django rest框架制作联系我们表单。序列化程序和视图中应该包含哪些内容。要从DRF中获得所需内容,可以执行以下操作: 序列化程序 class ContactUsSerializerSerializer(serializers.ModelSerializer): class Meta: model = ContactUs fields = ( "title", "description",

如何使用django rest框架制作联系我们表单。序列化程序和视图中应该包含哪些内容。

要从DRF中获得所需内容,可以执行以下操作:

序列化程序

class ContactUsSerializerSerializer(serializers.ModelSerializer):
    class Meta:
        model = ContactUs
        fields = (
            "title",
            "description",
            **fields you need**
            "created_at",
            "updated_at"
        )
        read_only_fields = (
            "pk",
            **other business logic**
            "created_at",
            "updated_at"
        )
视图:

我终于明白了。 对于那些不想将数据保存在数据库中,但直接通过电子邮件发送数据的人,这里是解决方案。有关意见:

from .serializers import *
from rest_framework.permissions import AllowAny
from rest_framework.views import APIView
from django.core.mail import send_mail
from rest_framework.response import Response

class ContactView(APIView):
    def post(self, request, *args, **kwargs):
         serailizer_class = ContactSerailizer(data=request.data)
         if serailizer_class.is_valid():
             data = serailizer_class.validated_data
             email_from = data.get('email')
             subject = data.get('subject')
             message = data.get('message')
             send_mail(subject, message, email_from,['send to email'],)

         return Response({"success": "Sent"})
         return Response({'success': "Failed"}, status=status.HTTP_400_BAD_REQUEST)
对于序列化程序文件:

from rest_framework import serializers

class ContactSerailizer(serializers.Serializer):
    name = serializers.CharField()
    email = serializers.EmailField()
    subject = serializers.CharField()
    message = serializers.CharField()

如果您想将数据保存在数据库中,请注意您必须创建一个模型。

欢迎来到社区,我强烈建议您阅读,基本上,您需要在询问Django REST框架中为什么需要联系我们表单之前发布您的研究成果和这些内容。你确定这不是给Django的吗?@KarinaK我需要在从react表单获得数据后发送电子邮件。所以我不需要在数据库中保存数据,我只需要发送email@AhmedI.Elsayed我理解。我在谷歌上到处搜索都不走运,Django rest框架文档在这里也没怎么提到[实际上他们的示例代码有一个错误我很欣赏这一点,但是如果我只想发送带有前端表单数据的电子邮件,我真的需要一个模型吗?我尝试了这个
类ContactForm(serializers.Serializer):email=serializers.EmailField()message=serializers.CharField()
但是我在发送数据的api链接中得到的表单没有字段
from rest_framework import serializers

class ContactSerailizer(serializers.Serializer):
    name = serializers.CharField()
    email = serializers.EmailField()
    subject = serializers.CharField()
    message = serializers.CharField()