【问题标题】:Django project error: TypeError: 'module' object is not subscriptableDjango项目错误:TypeError:'module'对象不可下标
【发布时间】: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 中所做的几乎相同。

标签: python django


【解决方案1】:

你有没有尝试给你的班级起不同的名字?您定义的 'UserAdmin' 类可能与 'django.contrib.auth.admin' - UserAdmin 冲突。

【讨论】:

  • 我尝试使用另一个名称,但我得到了同样的错误。也许模型中存在问题?
  • 请不要在“通讯”中使用“答案”框。而是将其作为评论发布。
猜你喜欢
  • 2015-12-09
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多