[英]How to send dynamic data in email in Django Rest Framework
我正在嘗試編寫一個在文件上傳后發送通知電子郵件的函數。 如果我對“發送到”電子郵件地址進行硬編碼,則我的以下代碼有效。
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
from_email = self.request.user.email
send_mail('New Files have been Uploaded',
'New files have been uploaded.',
from_email,
['sendto@email.com', ],
fail_silently=False)
我需要根據序列化程序中的 editor_email 動態設置“sendto@email.com”。 下面是序列化器。
class VideoSerializer(serializers.ModelSerializer):
projectName = serializers.SerializerMethodField(allow_null=True)
editor_email = serializers.EmailField(
source='editor.email', required=False)
class Meta:
model = Video
# fields = '__all__'
fields = [
'url',
'handle',
'filename',
'size',
'source',
'uploadId',
'originalPath',
'owner',
'project',
'uploadDate',
'editor',
'projectName',
'editor_email'
]
def get_projectName(self, obj):
return obj.project.projectName
當我在應用程序的前端檢查 JSON 響應時,“editor_email”的值正是我所期望的。
我對 Django Rest Framework 比較陌生,這里一定有我遺漏的東西。 我花了幾個小時閱讀文檔並嘗試不同的東西,但似乎沒有任何效果。
請問,有人可以告訴我如何根據序列化程序設置此電子郵件嗎?
從views.py
刪除郵件發送代碼片段並將其移動到serilizers
中
# views.py
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
from_email = self.request.user.email send_mail('New Files have been Uploaded', 'New files have been uploaded.', from_email, ['sendto@email.com', ], fail_silently=False)
# serializers.py
class VideoSerializer(serializers.ModelSerializer):
# your code
def send_dynamic_mail(self, video_instance): from_email = video_instance.owner.email send_mail('New Files have been Uploaded', 'New files have been uploaded.', from_email, [video_instance.editor.email, ], fail_silently=False) def create(self, validated_data): video_instance = super().create(validated_data) self.send_dynamic_mail(video_instance) return video_instance
我認為您可以在您的函數中獲取字段editor_email
數據。 如果它只是字符串數據,那么你可以這樣做:
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
to_email = serializer.data['editor_email']
if to_email:
from_email = self.request.user.email
send_mail('New Files have been Uploaded',
'New files have been uploaded.',
from_email,
[to_email, ],
fail_silently=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.