![](/img/trans.png)
[英]django AttributeError 'WSGIRequest' object has no attribute 'get'
[英]Django - WSGIRequest' object has no attribute 'Get'
因此,我有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')
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'
它與您遵循的方法無關。 在第一種方法中,您將編寫:
if request.Get.get('Filter') in status_list:
# ...
就像錯誤所說的一樣, request
對象沒有Get
屬性,只有GET
屬性。 您在其余視圖中也會犯同樣的錯誤。
因此,您可以使用以下方法解決此問題:
if request.GET.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'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.