[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)


답변