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