Django - WSGIRequest 'объект не имеет атрибута' Get ' - PullRequest
0 голосов
/ 13 сентября 2018

Итак, у меня есть 2 сценария, в которых один работает, а другой нет.Я установил поле выбора в шаблоне html с некоторыми жестко заданными параметрами, которые вы можете увидеть в Scenrio2.Мне интересно знать, почему Scenario2 работает без проблем, и Scenario1 выдает эту ошибку.Я также приложил трассировку стека ниже.


Сценарий 1 (не работает):

    current_status = 'All'
    status_list = []

    all_status = RequisitionStatus.objects.all()
    for status in all_status:
        status_list.append(status.status)

    if request.Get.get('Filter') in status_list:
        user_req_lines_incomplete = RequisitionLine.objects.filter(Q(parent_req__username=request.user) & Q(status__status=request.Get.get('Filter')))
        current_status = request.Get.get('Filter')
    else:
        user_req_lines_incomplete = RequisitionLine.objects.filter(parent_req__username=request.user).exclude(status__status='Completed')

Сценарий 2 (работает):

if request.GET.get('Filter') == 'Created':
        user_req_lines_incomplete = RequisitionLine.objects.filter(Q(parent_req__username=request.user) & Q(status__status='Created'))
        current_status = 'Created'
    elif request.GET.get('Filter') == 'For Assistance':
        user_req_lines_incomplete = RequisitionLine.objects.filter(Q(parent_req__username=request.user) & Q(status__status='For Assistance'))
        current_status = 'For Assistance'
    elif request.GET.get('Filter') == 'Assistance Complete':
        user_req_lines_incomplete = RequisitionLine.objects.filter(Q(parent_req__username=request.user) & Q(status__status='Assistance Complete'))
        current_status = 'Assistance Complete'
    elif request.GET.get('Filter') == 'Assistance Rejected':
        user_req_lines_incomplete = RequisitionLine.objects.filter(Q(parent_req__username=request.user) & Q(status__status='Assistance Rejected'))
        current_status = 'Assistance Rejected'
    else:
        user_req_lines_incomplete = RequisitionLine.objects.filter(parent_req__username=request.user).exclude(status__status='Completed')

StackTrace:

Traceback:

File "C:\Users\Kevin.Pardo\Documents\Python\venv\env\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\Kevin.Pardo\Documents\Python\venv\env\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\Kevin.Pardo\Documents\Python\venv\env\lib\site-packages\django\core\handlers\base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\Kevin.Pardo\Documents\Python\venv\env\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "C:\Users\Kevin.Pardo\Documents\Python\django\lambda\req\views.py" in pending_action
  241.     if request.Get.get('Filter') in status_list:

Exception Type: AttributeError at /req/pending/
Exception Value: 'WSGIRequest' object has no attribute 'Get'

1 Ответ

0 голосов
/ 13 сентября 2018

Это не имеет ничего общего с подходом, которому вы следовали.При первом подходе вы пишете:

if request.<b>Get</b>.get('Filter') in status_list:
  # ...

Как говорится в ошибке, объект request не имеет атрибута Get, только атрибут GET.Вы делаете ту же ошибку в остальной части представления.

Таким образом, вы можете исправить это с помощью:

if request.<b>GET</b>.get('Filter') in status_list:
  # ...

Кроме того, вы также написали parent_req__username=request.user в фильтрации (обоих представлений),Я думаю, что может быть лучше использовать parent_req=request.user или parent_req__username=request.user.username).

На самом деле вы можете улучшить это немного дальше, например:

current_status = 'All'
all_status = RequisitionStatus.objects.values_list('status', flat=True)
filter = request.GET.get('filter')

if filter in status_list:
    user_req_lines_incomplete = RequisitionLine.objects.filter(
        parent_req=request.user,
        status__status=filter
    )
    current_status = filter
else:
    user_req_lines_incomplete = RequisitionLine.objects.filter(
        parent_req=request.user
    ).exclude(
        status__status='Completed'
    )
...