Почему мой оператор else не работает в django rest framework?
У меня есть следующий код:
views.py
@api_view(['DELETE'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def selected_job_delete(request,pk=None):
if pk != None:
job=Job.objects.get(pk=pk)
jobdetail = Job_detail.objects.get(job=pk)
jobtrack = Job_track.objects.get(job = pk)
jr = Job_removed()
jdr = Job_detail_removed()
jtr = Job_track_removed()
jr.jobname = job.jobname
jr.owner = job.owner
jr.enabled = job.enabled
jr.start_date = job.start_date
jr.start_time = job.start_time
jr.date_added = job.date_added
jr.version = job.version
jr.save()
jdr.job = jr
jdr.json = jobdetail.json
jdr.save()
jtr.job=jr
jtr.jobdetail= jdr
jtr.save()
operation = job.delete()
data = {}
if operation:
data["Success"] = "Successfully deleted"
else:
data["Failure"] = "Unsuccessful"
return Response(data)
urls.py
path('api/jobs/<int:pk>/delete', views.selected_job_delete),
Допустим, моя база данных в Job
имеет единственный следующий id 40
. Я хочу удалить ее, поэтому я ввожу ключ url api/jobs/40/delete
и произойдет удаление, а затем задание в функции. Результат вывода в моем postman покажет, что это successfully deleted
. Но если я ввожу url api/jobs/41/delete
, id 41
не существует в моей базе данных, он не запускает оператор else, чтобы показать unsuccessful
.
Вместо этого он показывает мне
Как сделать так, чтобы вместо целого куска ошибки показывалось unsuccessful
, что он не существует?
Можно сделать так:
try:
job.delete()
except:
data["Failure"] = "Unsuccessful"
return Response(data)
update
try:
job=Job.objects.get(pk=pk)
except: Job.DoesNotExist:
data["Failure"] = "Unsuccessful"
return data
Вы должны поймать исключение Job.DoesNotExist
:
@api_view(['DELETE'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def selected_job_delete(request, pk=None):
if pk != None:
try:
job=Job.objects.get(pk=pk)
jobdetail = Job_detail.objects.get(job=pk)
jobtrack = Job_track.objects.get(job = pk)
jr = Job_removed()
jdr = Job_detail_removed()
jtr = Job_track_removed()
jr.jobname = job.jobname
jr.owner = job.owner
jr.enabled = job.enabled
jr.start_date = job.start_date
jr.start_time = job.start_time
jr.date_added = job.date_added
jr.version = job.version
jr.save()
jdr.job = jr
jdr.json = jobdetail.json
jdr.save()
jtr.job=jr
jtr.jobdetail= jdr
jtr.save()
operation = job.delete()
if operation:
return Response({"Success": "Successfully deleted"})
except Job.DoesNotExist:
pass
return Response({"Failure": "Unsuccessful"})