httprunner Manage测试平台,报AttributeError: 'dict' object has no attribute 'META'

错误日志如下:

Traceback (most recent call last):
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/HttpRunnerManager/activator.py", line 15, in process
    result = fun(request, index) if index else fun(request)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/ApiManager/views.py", line 39, in wrapper
    return func(request, *args, **kwargs)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/ApiManager/views.py", line 444, in edit_case
    return render(request, template_name='edit_case.html', context=manage_info)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/template/base.py", line 168, in render
    with context.bind_template(self):
  File "/usr/local/Cellar/python@3.9/3.9.1_6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/contextlib.py", line 117, in __enter__
    return next(self.gen)
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/template/context.py", line 244, in bind_template
    updates.update(processor(self.request))
  File "/Users/forkey/Documents/company/PythonTest/HttpRunnerManager/venv/lib/python3.9/site-packages/django/template/context_processors.py", line 40, in debug
    if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
AttributeError: 'dict' object has no attribute 'META'

具体代码如下

```
@login_check
def edit_case(request, id=None):
account = request.session[“now_account”]
if request.is_ajax():
testcase_lists = json.loads(request.body.decode(‘utf-8’))
msg = case_info_logic(type=False, **testcase_lists)
return HttpResponse(get_ajax_msg(msg, ‘/api/test_list/1/’))

test_info = TestCaseInfo.objects.get_case_by_id(id)
request = eval(test_info[0].request)
include = eval(test_info[0].include)
manage_info = {
    'account': account,
    'info': test_info[0],
    'request': request['test'],
    'include': include,
    'project': ProjectInfo.objects.all().values('project_name').order_by('-create_time')
}
return render(request, template_name='edit_case.html', context=manage_info)

##### 打印出project的类型及value

<class ‘django.db.models.query.QuerySet’>
<QuerySet [{‘project_name’: ‘项目123’}]>


@seveniruby 麻烦帮忙看一下
  • 从报错来看,是request变量本来应该是一个HttpRequest对象,结果现在传递进去的是一个字典,导致没有META属性
  • 另外查了一下 这个项目已经停止维护一年半了,可能跟你的3.9版本python并不契合。
  • 看了一下项目依赖都很旧。。里面用的httprunner甚至还是1.X的版本 现在都更新到3了。

嗯嗯,已经解决了。