如何将 signals.py 错误消息呈现给 django-rest API?
How to render signals.py error message to the django-rest API?
我正在尝试将错误消息从 Django signals.py
文件渲染到 django-restframework views.py
。我这样创建了 views.py 文件,
class HazardIndexViewSet(viewsets.ModelViewSet):
queryset = HazardIndex.objects.all()
serializer_class = HazardIndexSerializer
permission_classes = [permissions.IsAuthenticated]
我的 signals.py
文件看起来像,
@receiver(post_save, sender=HazardIndex)
def publish_to_geoserver(instance, created, *args, **kwrgs):
try:
geo.create_coveragestore(instance.name, instance.workspace_name, path=instance.file)
except Exception as e:
instance.delete()
print("Something is wrong while creating coveragestore")
我希望此打印语句(print("Something is wrong while creating coveragestore")
) 显示API 中的错误消息。另一件事是,我只想在 publish_to_geosever
函数成功运行时创建实例。否则它应该通过错误。有帮助吗?
您可以引发 rest_franework 异常,以便它出现在 API 中。我在这里使用 ValidationError
因为它在响应中给出 400
状态代码,在正文中它会显示您的打印消息:
from rest_framework.exceptions import ValidationError
@receiver(post_save, sender=HazardIndex)
def publish_to_geoserver(instance, created, *args, **kwrgs):
try:
geo.create_coveragestore(instance.name, instance.workspace_name, path=instance.file)
except Exception as e:
instance.delete()
raise ValidationError("Something is wrong while creating coveragestore")
关于你关于成功创建的第二个问题,我想保持原样是可以的,因为它会尝试创建你的地理对象,如果不能,那么它会在 API.
我正在尝试将错误消息从 Django signals.py
文件渲染到 django-restframework views.py
。我这样创建了 views.py 文件,
class HazardIndexViewSet(viewsets.ModelViewSet):
queryset = HazardIndex.objects.all()
serializer_class = HazardIndexSerializer
permission_classes = [permissions.IsAuthenticated]
我的 signals.py
文件看起来像,
@receiver(post_save, sender=HazardIndex)
def publish_to_geoserver(instance, created, *args, **kwrgs):
try:
geo.create_coveragestore(instance.name, instance.workspace_name, path=instance.file)
except Exception as e:
instance.delete()
print("Something is wrong while creating coveragestore")
我希望此打印语句(print("Something is wrong while creating coveragestore")
) 显示API 中的错误消息。另一件事是,我只想在 publish_to_geosever
函数成功运行时创建实例。否则它应该通过错误。有帮助吗?
您可以引发 rest_franework 异常,以便它出现在 API 中。我在这里使用 ValidationError
因为它在响应中给出 400
状态代码,在正文中它会显示您的打印消息:
from rest_framework.exceptions import ValidationError
@receiver(post_save, sender=HazardIndex)
def publish_to_geoserver(instance, created, *args, **kwrgs):
try:
geo.create_coveragestore(instance.name, instance.workspace_name, path=instance.file)
except Exception as e:
instance.delete()
raise ValidationError("Something is wrong while creating coveragestore")
关于你关于成功创建的第二个问题,我想保持原样是可以的,因为它会尝试创建你的地理对象,如果不能,那么它会在 API.