简体   繁体   中英

Django - WSGIRequest' object has no attribute 'Get'

So I have 2 scenerios in which one works and one doesnt. I set up a select box in the html template with some hard coded options which you can see in Scenrio2. Im curious to know why Scenario2 works with no problems and Scenario1 throws this error. I have also attached the stack trace below.


Scenario1(Doesnt Work):

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

Scenario 2(works):

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'

It has nothing to do with the approach you followed. In your first approach you write:

if request..get('Filter') in status_list:
  # ...

Like the error says, the request object has no Get attribute, only a GET attribute. You make the same mistake over the rest of the view.

So you can fix this with:

if request..get('Filter') in status_list:
  # ...

You furthermore also wrote parent_req__username=request.user in the filtering (of both views), I think it might be better to use parent_req=request.user , or parent_req__username=request.user.username ).

You can in fact improve this a bit further like:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM