为什么我的 else 语句在 django rest 框架中不起作用?
Why is my else statement not working in 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
。我想删除它,所以我键入 api/jobs/40/delete
的 url 并且删除将会发生,然后是函数中的任务。我邮递员的输出结果将显示为 successfully deleted
。但是如果我键入 api/jobs/41/delete
的 url,41
的 id 在我的数据库中不存在,它不会 运行 我的 else 语句显示 unsuccessful
.
而是显示给我
我怎样才能让它显示 unsuccessful
而不是显示它不存在的整个错误?
也许你可以这样做:
try:
job.delete()
except:
data["Failure"] = "Unsuccessful"
return Response(data)
更新
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"})
我有以下代码:
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
。我想删除它,所以我键入 api/jobs/40/delete
的 url 并且删除将会发生,然后是函数中的任务。我邮递员的输出结果将显示为 successfully deleted
。但是如果我键入 api/jobs/41/delete
的 url,41
的 id 在我的数据库中不存在,它不会 运行 我的 else 语句显示 unsuccessful
.
而是显示给我
我怎样才能让它显示 unsuccessful
而不是显示它不存在的整个错误?
也许你可以这样做:
try:
job.delete()
except:
data["Failure"] = "Unsuccessful"
return Response(data)
更新
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"})