Как исправить send_messasge() отсутствует 1 необходимый позиционный аргумент: 'message'
В настоящее время я работаю над функцией уведомления в Django. Я могу запустить созданный код на localhost, серверах разработки, но когда я развернул тот же код на рабочем сервере, он выдает следующую ошибку
send_messasge() missing 1 required positional argument: 'message'
Ниже приведен мой model.py код.
class All_Device_Notification(models.Model):
title = models.TextField(default="")
description = models.TextField(default="")
link = models.TextField(default="")
def __str__(self):
return self.title
def save(self, *args, **kwargs):
filtered_users = User.objects.all()
devices = FCMDevice.objects.filter(user__in=list(filtered_users))
devices.send_message(title=self.title, body=self.description, click_action=self.link)
super(All_Device_Notification, self).save(*args, **kwargs)
Здесь я не могу понять, что если я компилирую код на localhost или сервере разработки, то он работает хорошо, но почему я сталкиваюсь с ошибкой на рабочем сервере?
ниже приведен мой файл urls.py
url(r'^devices?$', FCMDeviceAuthorizedViewSet.as_view({'post': 'create'}),name='create_fcm_device'),
Вы используете fcm-django < 1
на сервере разработки, но последнюю версию на рабочем сервере.
Устранение проблемы на рабочем сервере заключается в ограничении версии в файле требований.
requirements.txt:
# fcm-django
fcm-django < 1
Возможно, вы захотите рассмотреть Миграцию на v1.0.
Чтобы установить последнюю версию на сервер разработки, запустите pip install
с флагом upgrade:
pip install -U fcm-django
Чтобы перейти на более низкую версию:
pip install 'fcm-django<1'
Использование в fcm-django < 1
: https://fcm-django.readthedocs.io/en/archive-pyfcm/
devices.send_message(title=self.title, body=self.description, click_action=self.link)
Используется в последней версии fcm-django
: https://fcm-django.readthedocs.io/en/latest/
from firebase_admin.messaging import Message, Notification
devices.send_message(
Message(
notification=Notification(title=self.title, body=self.description),
android=AndroidNotification(click_action=self.link),
apns=APNSConfig(payload=APNSPayload(aps=Aps(category=self.link))),
)
)
Вы используете fcm-django < 1
на сервере разработки, но последнюю версию на рабочем сервере.
Устранение проблемы на рабочем сервере заключается в ограничении версии в файле требований.
requirements.txt:
# fcm-django
fcm-django < 1
Возможно, вы захотите рассмотреть Миграцию на v1.0.
Чтобы установить последнюю версию на сервер разработки, запустите pip install
с флагом upgrade:
pip install -U fcm-django
Чтобы перейти на более низкую версию:
pip install 'fcm-django<1'
Использование в fcm-django < 1
: https://fcm-django.readthedocs.io/en/archive-pyfcm/
devices.send_message(title=self.title, body=self.description, click_action=self.link)
Используется в последней версии fcm-django
: https://fcm-django.readthedocs.io/en/latest/
from firebase_admin.messaging import Message, Notification
devices.send_message(
Message(
notification=Notification(title=self.title, body=self.description),
android=AndroidNotification(click_action=self.link),
apns=APNSConfig(payload=APNSPayload(aps=Aps(category=self.link))),
)
)