简体   繁体   English

Django-WSGIRequest'对象没有属性'Get'

[英]Django - WSGIRequest' object has no attribute 'Get'

So I have 2 scenerios in which one works and one doesnt. 因此,我有2个场景,其中一个有效,而一个无效。 I set up a select box in the html template with some hard coded options which you can see in Scenrio2. 我在html模板中设置了一个选择框,其中包含一些在Scenrio2中可以看到的硬编码选项。 Im curious to know why Scenario2 works with no problems and Scenario1 throws this error. 我很想知道为什么Scenario2可以正常工作,而Scenario1会引发此错误。 I have also attached the stack trace below. 我还附加了下面的堆栈跟踪。


Scenario1(Doesnt Work): 方案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')

Scenario 2(works): 方案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'

It has nothing to do with the approach you followed. 它与您遵循的方法无关。 In your first approach you write: 在第一种方法中,您将编写:

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

Like the error says, the request object has no Get attribute, only a GET attribute. 就像错误所说的一样, request对象没有Get属性,只有GET属性。 You make the same mistake over the rest of the view. 您在其余视图中也会犯同样的错误。

So you can fix this with: 因此,您可以使用以下方法解决此问题:

if request.GET.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 ). 您还进一步在过滤(两个视图)中都写了parent_req__username=request.user ,我认为最好使用parent_req=request.userparent_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'
    )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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