【发布时间】:2020-11-04 04:57:07
【问题描述】:
我正在学习 Django 和 Rest Framework,我有一个小项目要练习,但是在尝试访问 http://localhost:8000/admin 时出现错误:TypeError: object 'module' is not subscribable。
这些是我创建的 Python 文件:
admin.py:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.utils.translation import gettext as _
from . import models
class UserAdmin(BaseUserAdmin):
ordering = ['id']
list_display = ['email', 'name']
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal Info'), {'fields': ('name',)}),
(
_('Permissions'),
{
'fields': (
'is_active',
'is_staff',
'is_superuser',
)
}
),
(_('Important dates'), {'fields': ('last_login',)}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2')
}),
)
admin.site.register(models.User, UserAdmin)
这是回溯:
Traceback(最近一次调用最后一次):文件 “/home/jesus/.local/lib/python3.8/site-packages/django/core/handlers/exception.py”, 第 34 行,在内部 response = get_response(request)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/core/handlers/base.py”, 第 115 行,在 _get_response 中 response = self.process_exception_by_middleware(e, request)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/core/handlers/base.py”, 第 113 行,在 _get_response 中 response = Wrapped_callback(request, *callback_args, **callback_kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/decorators/cache.py”, 第 44 行,在 _wrapped_view_func response = view_func(request, *args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/contrib/admin/sites.py”, 第 407 行,登录 return LoginView.as_view(**defaults)(request)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/generic/base.py”, 第 71 行,在视图中 return self.dispatch(request, *args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/utils/decorators.py”, 第 43 行,在 _wrapper 中 return bound_method(*args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/decorators/debug.py”, 第 76 行,在sensitive_post_parameters_wrapper 中 返回视图(请求,*args,**kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/utils/decorators.py”, 第 43 行,在 _wrapper 中 return bound_method(*args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/utils/decorators.py”, 第 130 行,在 _wrapped_view response = view_func(request, *args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/utils/decorators.py”, 第 43 行,在 _wrapper 中 return bound_method(*args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/decorators/cache.py”, 第 44 行,在 _wrapped_view_func response = view_func(request, *args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/contrib/auth/views.py”, 第 63 行,发送中 return super().dispatch(request, *args, **kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/generic/base.py”, 第 97 行,发送中 返回处理程序(请求,*args,**kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/generic/edit.py”, 第 133 行,在获取 return self.render_to_response(self.get_context_data())
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/contrib/auth/views.py”, 第 96 行,在 get_context_data 中 context = super().get_context_data(**kwargs)
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/generic/edit.py”, 第 66 行,在 get_context_data 中 kwargs['form'] = self.get_form()
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/views/generic/edit.py”, 第 33 行,在 get_form 中 return form_class(**self.get_form_kwargs())
文件 “/home/jesus/.local/lib/python3.8/site-packages/django/contrib/auth/forms.py”, 第 204 行,在 init 中 self.fields['username'].max_length = username_max_length
TypeError: 'module' 对象不可下标
【问题讨论】:
-
能否请您发布完整回溯?
-
很确定这是管理员中的一个已知错误...使用 python 3.8...
-
不,这是带有 Django 3.x 的 python 3.8。 tb 中没有本地代码引用,我不明白你是如何设法用模块引用覆盖 self.fields 的。
-
我无法用 python 3.8.3 和 Django 3.0.8 重现这个。我是否使用装饰器并没有什么不同。您如何在 AuthenticationForm 中遇到错误也超出了我的范围。您的错误必须出现在您未显示的代码中,因为我所做的与您在 UserAdmin 中所做的几乎相同。