Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将python2项目移植到python3时,在mobileesp的中间件中获取错误_Django_Python 3.x - Fatal编程技术网

Django 将python2项目移植到python3时,在mobileesp的中间件中获取错误

Django 将python2项目移植到python3时,在mobileesp的中间件中获取错误,django,python-3.x,Django,Python 3.x,在将带有Django 1.1.11的python2项目移植到Python3.7和Django 2.2.5时,我在依赖项中遇到了错误 我在python2中使用Django-mobileesp,当我将代码更新到python3时,它会给出UserAgent中间件的错误 线程django主线程中出现异常: 回溯(最近一次呼叫最后一次): 文件“/usr/lib/python3.7/threading.py”,第917行,在内部引导中 self.run() 文件“/usr/lib/python3.7/th

在将带有Django 1.1.11的python2项目移植到Python3.7和Django 2.2.5时,我在依赖项中遇到了错误

我在python2中使用Django-mobileesp,当我将代码更新到python3时,它会给出UserAgent中间件的错误

线程django主线程中出现异常: 回溯(最近一次呼叫最后一次): 文件“/usr/lib/python3.7/threading.py”,第917行,在内部引导中 self.run() 文件“/usr/lib/python3.7/threading.py”,第865行,正在运行 自我目标(*自我参数,**自我参数) 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/utils/autoreload.py”,第54行,在包装器中 fn(*args,**kwargs) 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/core/management/commands/runserver.py”,第137行,在内部运行 handler=self.get\u处理程序(*args,**选项) 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/contrib/staticfiles/management/commands/runserver.py”,第27行,在get_handler中 handler=super() 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/core/management/commands/runserver.py”,第64行,在get_handler中 返回get_internal_wsgi_application() 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/core/servers/basehttp.py”,第45行,在get_internal_wsgi_应用程序中 返回导入字符串(应用程序路径) 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/utils/module_loading.py”,第17行,导入字符串 模块=导入模块(模块路径) 导入模块中的文件“/home/jarvis/Desktop/law3/lib/python3.7/importlib/init.py”,第127行 return _bootstrap._gcd_import(名称[级别:],包,级别) 文件“”,第1006行,在\u gcd\u导入中 文件“”,第983行,在_find_和_load中 文件“”,第967行,在“查找”和“加载”中解锁 文件“”,第677行,在\u加载\u解锁 exec_模块中第728行的文件“” 文件“”,第219行,在“调用”中,删除了“帧” 文件“/home/jarvis/Desktop/law3/src/laversify/wsgi.py”,第5行,在 application=get\u wsgi\u application() 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/core/wsgi.py”,第13行,在get_wsgi_应用程序中 返回WSGIHandler() 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/core/handlers/wsgi.py”,第135行,在init self.load_中间件() 文件“/home/jarvis/Desktop/law3/lib/python3.7/site packages/django/core/handlers/base.py”,第37行,在load_中间件中 mw_实例=中间件(处理程序) TypeError:UserAgentDetectionMiddleware()不接受任何参数

设置.py

MIDDLEWARE =  [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django_mobileesp.middleware.UserAgentDetectionMiddleware'
]


#middleware.py#

from django.conf import settings
from django.utils.functional import SimpleLazyObject

DETECT_USER_AGENTS = getattr(settings, 'DETECT_USER_AGENTS', {})

def lazy_detection(request, key):
    detector = DETECT_USER_AGENTS[key]
    return SimpleLazyObject( lambda: detector(request) )


class UserAgentDetectionMiddleware(object):
    """
    Middleware to detect request's user agent
    """
    def process_request(self, request):
        for each in DETECT_USER_AGENTS:
            setattr( request, each, lazy_detection(request, each) )

这不是Python版本的问题,而是Django版本的问题。Django 2.0中删除了旧的(Django 1.10之前的)中间件方式以及中间件_类设置。请参阅如何使您的中间件与新的中间件结构兼容。

先生,我已相应地更改了中间件,但问题仍然存在。