django - Django - WSGIRequest'对象没有属性'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'
)
推荐阅读
- javascript - 如何在可滚动的 div 上添加叠加层
- django - Django过滤深度相关模型
- python - 为什么需要 create_task() 来使用 asyncio collect 创建一个协程队列?
- c# - Docker ram 内存限制
- python - Python中的Filedialog问题,Selenium'NameError'
- reactjs - Potree/Three.js - 我在哪里可以找到实时摄像头(活动摄像头)位置坐标?
- javascript - 横向网页JS拖动滚动
- laravel - Laravel 超级菜单循环
- ios - 通过将 KML 文件添加到应用程序来扩大应用程序大小
- android - 我可以在 MacBook 或其他 macOS 设备上下载 AOSP 并编译 Android 操作系统吗?