Django报TypeError: method对象不支持项赋值
报错修复方案
你遇到的两个问题都是基础语法和配置顺序错误导致的,按以下步骤修改即可:
1. 修复 TypeError: 'method' object does not support item assignment 报错
这个错误出在你的manage.py文件中,os.environ.setdefault是可调用方法,不是字典对象,不能用方括号做键值赋值,属于调用语法书写错误。
找到manage.py里的这行错误代码:
os.environ.setdefault['DJANGO_SETTINGS_MODULE']='groceryshop.settings'
替换为正确的传参调用写法:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'groceryshop.settings')
2. 修复「应用未安装」的报错
这个问题是settings.py的代码顺序和内容错误导致的:
- 你在settings文件最顶部就提前导入了自定义应用的模型、调用了WSGI初始化方法,此时Django还没完成配置加载,
INSTALLED_APPS列表都没被读取,自然识别不到你注册的userprofile、allauth系列应用。 - 直接删掉settings.py开头这三行不属于配置逻辑的错误代码:
WSGI应用初始化逻辑本来就属于项目下的from userprofile.models import UserProfile from django.core.wsgi import get_wsgi_application application = get_wsgi_application()wsgi.py文件,不需要写在settings配置里;模型导入也不能放在settings文件头部,会触发循环导入、配置未就绪就调用模型的问题。
3. 补全缺失的必填配置
你在INSTALLED_APPS里注册了django.contrib.sites和allauth相关组件,必须补全对应必填配置,否则启动后还会抛错:
- 在
INSTALLED_APPS配置块下方添加配置:SITE_ID = 1 - 本地开发阶段先把
DEBUG = False改成DEBUG = True,否则看不到详细报错、静态资源也无法正常加载,等正式上线部署时再关闭DEBUG模式。
所有修改完成后,执行python manage.py migrate同步数据库结构,再启动服务即可正常访问登录/注册页面。
内容的提问来源于stack exchange,提问作者bobsmiths
相关产品推荐
相关产品推荐

