【问题标题】:werkzeug + django + gunicorn: TypeErrorwerkzeug + django + gunicorn: TypeError
【发布时间】:2014-06-19 16:32:10
【问题描述】:

我是 werkzeug 的新手,在安装和设置后尝试访问测试页面时收到“TypeError:init() 至少需要 2 个参数(给定 1 个)” . Werkzeug 确实提供了追溯(见下文)。我已经查看了它和我的设置,但没有成功。

我已经安装了以下软件包:

django_extensions
werkzeug

在我的 Django 设置文件中添加了以下内容:

########## WERKZEUG/DJANGO EXTENSIONS
INSTALLED_APPS += (
    'django_extensions',
    'werkzeug',
)
MIDDLEWARE_CLASSES += (
    'werkzeug.debug.DebuggedApplication',
)
########## END WERKZEUG/DJANGO EXTENSIONS

并创建了一个我从 gunicorn 驱动程序脚本调用的 dev_wsgi.py 文件:

# basic wsgi.py
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my-site.settings.dev')

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Werkzeug-specific
import django.views.debug

def null_technical_500_response(request, exc_type, exc_value, tb):
    raise exc_type, exc_value, tb
django.views.debug.technical_500_response = null_technical_500_response

# apply Werkzeug WSGI middleware
from werkzeug.debug import DebuggedApplication
application = DebuggedApplication(application, evalex=True)

但现在当我查看测试 URL 时,我得到以下回溯:

File "/python2-venv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
self.load_middleware()
File "/python2-venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 49, in load_middleware
mw_instance = mw_class()
TypeError: __init__() takes at least 2 arguments (1 given)

注释掉 dev_wsgi.py 中特定于 Werkzeug 的行可以让我的测试页面正确显示。我正在使用 Werkzeug 0.9.4、django_extensions 1.3.3、django 1.6.4 和 Python 2.7.6。

【问题讨论】:

  • 我还尝试禁用 Django 调试工具栏并在本地(作为本地主机)和通过 DNS 运行。

标签: python django gunicorn werkzeug


【解决方案1】:

werkzeug.debug.DebuggedApplication 是 WSGI 中间件而不是 Django 中间件。 Django 中间件不希望__init__ 有任何参数,并添加到MIDDLEWARE_CLASSES。 WSGI 中间件将至少一个参数传递给__init__,这是要包装的 WSGI 应用程序。您正试图同时使用它,但修复很简单。从MIDDLEWARE_CLASSES 设置中删除werkzeug.debug.DebuggedApplication

【讨论】:

  • 再次感谢。我为拉取请求写了一些文档。
猜你喜欢
  • 2013-03-25
  • 2013-03-01
  • 2012-09-09
  • 1970-01-01
  • 2021-03-19
  • 2017-03-28
  • 2012-08-17
  • 2012-10-24
  • 2014-07-23
相关资源
最近更新 更多