[python] 장고는 존재하지 않습니다
“DoesNotExist 오류”를 파악하는 데 문제가 있습니다. 무응답 결과를 관리하는 올바른 방법을 찾으려고 노력했지만 “DoesNotExist”또는 “개체에 DoestNotExists 속성이 없습니다”문제가 계속 발생합니다.
from django.http import HttpResponse
from django.contrib.sites.models import Site
from django.utils import simplejson
from vehicles.models import *
from gpstracking.models import *
def request_statuses(request):
data = []
vehicles = Vehicle.objects.filter()
Vehicle.vehicledevice_
for vehicle in vehicles:
try:
vehicledevice = vehicle.vehicledevice_set.get(is_joined__exact = True)
imei = vehicledevice.device.imei
try:
lastposition = vehicledevice.device.devicetrack_set.latest('date_time_process')
altitude = lastposition.altitude
latitude = lastposition.latitude
longitude = lastposition.longitude
date_time_process = lastposition.date_time_process.strftime("%Y-%m-%d %H:%M:%S"),
date_time_created = lastposition.created.strftime("%Y-%m-%d %H:%M:%S")
except Vehicle.vehicledevice.device.DoesNotExist:
lastposition = None
altitude = None
latitude = None
longitude = None
date_time_process = None
date_time_created = None
except Vehicle.DoesNotExist:
vehicledevice = None
imei = ''
item = [
vehicle.vehicle_type.name,
imei,
altitude,
"Lat %s Lng %s" % (latitude, longitude),
date_time_process,
date_time_created,
'',
''
]
data.append(item)
statuses = {
"sEcho": 1,
"iTotalRecords": vehicles.count(),
"iTotalDisplayRecords": vehicles.count(),
"aaData": data
}
json = simplejson.dumps(statuses)
return HttpResponse(json, mimetype='application/json')
답변
이 라인
except Vehicle.vehicledevice.device.DoesNotExist
DoesNotExist 예외에 대한 장치 인스턴스 를 찾는 것을 의미 하지만 클래스 수준에 있기 때문에 아무것도 없습니다.
except Device.DoesNotExist
답변
이런 식으로 ObjectDoesNotExist를 사용 하여이 문제에 대한 해결책을 찾았습니다.
from django.core.exceptions import ObjectDoesNotExist
......
try:
# try something
except ObjectDoesNotExist:
# do something
그 후에 내 코드가 필요에 따라 작동합니다.
어쨌든 감사합니다. 귀하의 게시물은 내 문제를 해결하는 데 도움이됩니다.
답변
내가 가장 좋고 최적화 된 솔루션은 다음과 같습니다.
시험: # 내 코드 "ModelName"을 제외하고 .DoesNotExist : # 내 코드
답변
Django에서 찾을 수없는 오류를 처리하는 좋은 방법입니다.
https://docs.djangoproject.com/en/3.1/topics/http/shortcuts/#get-object-or-404
from django.shortcuts import get_object_or_404
def get_data(request):
obj = get_object_or_404(Model, pk=1)