TypeError: 'module' object is not callable Django 3 render function
TypeError: 'module' object is not callable Django 3 render function
我只是在我的 Django 3 应用程序中制作一个简单的 hello world 页面我收到错误
TypeError: 'module' object is not callable
这里是错误
TypeError at /
'module' object is not callable
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.0.11
Exception Type: TypeError
Exception Value:
'module' object is not callable
Exception Location: C:\Users\admin\AppData\Roaming\Python\Python37\site- packages\django\template\context.py in bind_template, line 246
Python Executable: C:\Program Files (x86)\Microsoft Visual
Studio\Shared\Python37_64\python.exe
Python Version: 3.7.8
Python Path:
['C:\Users\admin\Repositories\django-docker\django-portal-base\app',
'C:\Program Files (x86)\Microsoft Visual '
'Studio\Shared\Python37_64\python37.zip',
'C:\Program Files (x86)\Microsoft Visual
Studio\Shared\Python37_64\DLLs',
'C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib',
'C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64',
'C:\Users\admin\AppData\Roaming\Python\Python37\site-packages',
'C:\Program Files (x86)\Microsoft Visual '
'Studio\Shared\Python37_64\lib\site-packages']
Server time: Thu, 14 Jan 2021 19:15:32 +0000
之前还可以,现在突然不行了。这是我的 views.py
from django.shortcuts import render
# from django.http import HttpResponse
# from django.template import RequestContext, loader
# from django.template import Context
def index(request):
"""Placeholder index view"""
print('XXXX')
return render(request, 'hello_world/index.html')
#return HttpResponse('Hello, World!')
def test(request):
context = {'foo': 'bar'}
return render(request, 'hello_world/index.html', context)
错误在 return render(request, 'hello_world/index.html')
行,但是当我将其更改为 return HttpResponse('Hello, World!')
时它工作正常。
我的html文件很简单index.html
<h3> MY DJANGO APP</h3>
html 文件也在正确的文件夹中 templates/hello_world/index.html
设置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': False,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.contrib.sessions'
],
},
},
]
django.contrib.sessions
不是可调用对象,因此它不是有效的上下文处理器。
事实上,它是一个应用程序,因此,它应该在您的 INSTALLED_APPS
列表中,而不是在 TEMPALTES
context_processors
列表中。从那里删除它应该可以解决这个问题。
为什么会这样?
异常提到它发生在 django/template/context.py
第 246 行(在 Django v3.0.11 中)。如果你 see the source code at line 246,你可以看到 Django 在这一行是 运行 注册的模板上下文处理器。由于 django.contrib.sessions
不是可调用对象,而是模块,因此您会收到此异常消息:'module' object is not callable
.
我只是在我的 Django 3 应用程序中制作一个简单的 hello world 页面我收到错误
TypeError: 'module' object is not callable
这里是错误
TypeError at /
'module' object is not callable
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.0.11
Exception Type: TypeError
Exception Value:
'module' object is not callable
Exception Location: C:\Users\admin\AppData\Roaming\Python\Python37\site- packages\django\template\context.py in bind_template, line 246
Python Executable: C:\Program Files (x86)\Microsoft Visual
Studio\Shared\Python37_64\python.exe
Python Version: 3.7.8
Python Path:
['C:\Users\admin\Repositories\django-docker\django-portal-base\app',
'C:\Program Files (x86)\Microsoft Visual '
'Studio\Shared\Python37_64\python37.zip',
'C:\Program Files (x86)\Microsoft Visual
Studio\Shared\Python37_64\DLLs',
'C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib',
'C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64',
'C:\Users\admin\AppData\Roaming\Python\Python37\site-packages',
'C:\Program Files (x86)\Microsoft Visual '
'Studio\Shared\Python37_64\lib\site-packages']
Server time: Thu, 14 Jan 2021 19:15:32 +0000
之前还可以,现在突然不行了。这是我的 views.py
from django.shortcuts import render
# from django.http import HttpResponse
# from django.template import RequestContext, loader
# from django.template import Context
def index(request):
"""Placeholder index view"""
print('XXXX')
return render(request, 'hello_world/index.html')
#return HttpResponse('Hello, World!')
def test(request):
context = {'foo': 'bar'}
return render(request, 'hello_world/index.html', context)
错误在 return render(request, 'hello_world/index.html')
行,但是当我将其更改为 return HttpResponse('Hello, World!')
时它工作正常。
我的html文件很简单index.html
<h3> MY DJANGO APP</h3>
html 文件也在正确的文件夹中 templates/hello_world/index.html
设置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': False,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.contrib.sessions'
],
},
},
]
django.contrib.sessions
不是可调用对象,因此它不是有效的上下文处理器。
事实上,它是一个应用程序,因此,它应该在您的 INSTALLED_APPS
列表中,而不是在 TEMPALTES
context_processors
列表中。从那里删除它应该可以解决这个问题。
为什么会这样?
异常提到它发生在 django/template/context.py
第 246 行(在 Django v3.0.11 中)。如果你 see the source code at line 246,你可以看到 Django 在这一行是 运行 注册的模板上下文处理器。由于 django.contrib.sessions
不是可调用对象,而是模块,因此您会收到此异常消息:'module' object is not callable
.