django 1.10 中的自定义设置和 wsgi 给我错误
Custom settings and wsgi in django 1.10 give me error
我在自定义设置中遇到这个错误 运行连接服务器:
salahaddin@TulipanROG ~/Proyectos/tiempoturco/tiempoturco (tiempoturco) ./manage.py runserver ✓ 640 23:22:06
Performing system checks...
System check identified no issues (0 silenced).
June 19, 2016 - 23:22:07
Django version 1.10a1, using settings 'tiempoturco.settings.dev'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f288d67f2f0>
Traceback (most recent call last):
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 142, in inner_run
handler = self.get_handler(*args, **options)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/runserver.py", line 27, in get_handler
handler = super(Command, self).get_handler(*args, **options)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 64, in get_handler
return get_internal_wsgi_application()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/servers/basehttp.py", line 49, in get_internal_wsgi_application
return import_string(app_path)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/utils/module_loading.py", line 20, in import_string
module = import_module(module_path)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 662, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/home/salahaddin/Proyectos/tiempoturco/tiempoturco/tiempoturco/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
return WSGIHandler()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 153, in __init__
self.load_middleware()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/handlers/base.py", line 79, in load_middleware
mw_instance = middleware(handler)
TypeError: object() takes no parameters
我有这个文件夹结构:
这是我的 wsgi 代码:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tiempoturco.settings.dev")
application = get_wsgi_application()
还有我的 manage.py 代码:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tiempoturco.settings.dev")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
怎么了?
我可以执行迁移并创建超级用户,使用 shell plus 和其他命令,但我可以 运行 服务器。我尝试将设置值更改为 production 和 dev,将这些值放入 __init__.py
并做其他事情但什么也没做。
和middleware_clases
:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
我找不到相关信息,我正在测试 django 1.10
。
我对 django 1.9.7
没有任何问题,我不知道为什么。同样,当我使用 wagtail 1.6
创建项目时,我在 运行 服务器中没有问题,wagtail 1.6
安装 django 1.9.7
,但我将其替换为 django 1.10
然后在 运行 迁移后尝试 运行 项目并创建一个超级用户,当我在浏览器中进入主页时,我可以看到该页面,也可以看到管理员。
所以,我没有使用其他应用程序的问题,但我自己手动创建多个设置给我这个错误。
谁能帮帮我?
尝试更改 MIDDLEWARE_CLASSES
MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
]
我在将我的应用程序升级到 Django 1.10 时遇到了类似的问题。首先,我会尝试将 MIDDLEWARE_CLASSES 更改为 MIDDLEWARE,因为在 Django 1.10 中,他们在这里引入了一种新的中间件样式:
https://docs.djangoproject.com/en/1.10/releases/1.10/
如果这不起作用,我建议检查你的 django 中间件文件,我必须将所有接受对象的 类 更改为 MiddlewareMixin,你可以通过调用导入:
from django.utils.deprecation import MiddlewareMixin
在我的例子中我改变了
class SiteMiddleware(object):
...
到
from django.utils.deprecation import MiddlewareMixin
class SiteMiddleware(MiddlewareMixin):
...
我要补充一点,除了 mol 提到的内容之外,在升级 Django 的过程中,我不得不暂时禁用链接的虚拟主机。也尝试全新升级到 Django 1.10(卸载 Django 1.9,然后安装 Django 1.10)。
您可能还需要另外清除所有 Django 会话。
我直接在Django 1.10试过了!最初它显示
"TypeError: object() takes no parameters" 错误。
在我的 settings.py 中将 MIDDLEWARE 更改为 MIDDLEWARE_CLASSES 后,它起作用了!
我在自定义设置中遇到这个错误 运行连接服务器:
salahaddin@TulipanROG ~/Proyectos/tiempoturco/tiempoturco (tiempoturco) ./manage.py runserver ✓ 640 23:22:06
Performing system checks...
System check identified no issues (0 silenced).
June 19, 2016 - 23:22:07
Django version 1.10a1, using settings 'tiempoturco.settings.dev'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f288d67f2f0>
Traceback (most recent call last):
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 142, in inner_run
handler = self.get_handler(*args, **options)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/runserver.py", line 27, in get_handler
handler = super(Command, self).get_handler(*args, **options)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 64, in get_handler
return get_internal_wsgi_application()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/servers/basehttp.py", line 49, in get_internal_wsgi_application
return import_string(app_path)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/utils/module_loading.py", line 20, in import_string
module = import_module(module_path)
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 662, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/home/salahaddin/Proyectos/tiempoturco/tiempoturco/tiempoturco/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
return WSGIHandler()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 153, in __init__
self.load_middleware()
File "/home/salahaddin/Proyectos/tiempoturco/lib/python3.5/site-packages/django/core/handlers/base.py", line 79, in load_middleware
mw_instance = middleware(handler)
TypeError: object() takes no parameters
我有这个文件夹结构:
这是我的 wsgi 代码:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tiempoturco.settings.dev")
application = get_wsgi_application()
还有我的 manage.py 代码:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tiempoturco.settings.dev")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)
怎么了?
我可以执行迁移并创建超级用户,使用 shell plus 和其他命令,但我可以 运行 服务器。我尝试将设置值更改为 production 和 dev,将这些值放入 __init__.py
并做其他事情但什么也没做。
和middleware_clases
:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
我找不到相关信息,我正在测试 django 1.10
。
我对 django 1.9.7
没有任何问题,我不知道为什么。同样,当我使用 wagtail 1.6
创建项目时,我在 运行 服务器中没有问题,wagtail 1.6
安装 django 1.9.7
,但我将其替换为 django 1.10
然后在 运行 迁移后尝试 运行 项目并创建一个超级用户,当我在浏览器中进入主页时,我可以看到该页面,也可以看到管理员。
所以,我没有使用其他应用程序的问题,但我自己手动创建多个设置给我这个错误。
谁能帮帮我?
尝试更改 MIDDLEWARE_CLASSES
MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
]
我在将我的应用程序升级到 Django 1.10 时遇到了类似的问题。首先,我会尝试将 MIDDLEWARE_CLASSES 更改为 MIDDLEWARE,因为在 Django 1.10 中,他们在这里引入了一种新的中间件样式:
https://docs.djangoproject.com/en/1.10/releases/1.10/
如果这不起作用,我建议检查你的 django 中间件文件,我必须将所有接受对象的 类 更改为 MiddlewareMixin,你可以通过调用导入:
from django.utils.deprecation import MiddlewareMixin
在我的例子中我改变了
class SiteMiddleware(object):
...
到
from django.utils.deprecation import MiddlewareMixin
class SiteMiddleware(MiddlewareMixin):
...
我要补充一点,除了 mol 提到的内容之外,在升级 Django 的过程中,我不得不暂时禁用链接的虚拟主机。也尝试全新升级到 Django 1.10(卸载 Django 1.9,然后安装 Django 1.10)。
您可能还需要另外清除所有 Django 会话。
我直接在Django 1.10试过了!最初它显示 "TypeError: object() takes no parameters" 错误。 在我的 settings.py 中将 MIDDLEWARE 更改为 MIDDLEWARE_CLASSES 后,它起作用了!