django 运行报错汇总
记录自己在使用django开发过程中遇到的问题,不间断更新。
(1) 独立运行普通Python脚本调用django中定义的类报错
报错信息:
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
产生原因:
在django 项目中想要单独运行一个Python脚本,脚本中调用了django项目的模块函数,本以为顺利执行,结果报错。
解决办法:
#!/usr/bin/env python3 # coding: utf-8 import os,django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "superops.settings") django.setup() def collectasset(): from assets.AssetApi import Asset obj = Asset() info_list = obj.collect_all_minions() obj.save_info(info_list) if __name__ == "__main__": collectasset()
(2)queryset object has no attribute meta
产生原因:
获取数据对象时,通过 filter 来获取的,并不是get,如果想使用对象的属性,需要通过get获取。
obj = Asset.object.filter(name='abc') obj = Asset.object.get(name='abc') obj = get_object_404(Asset, name='abc')
(3)Django 项目启动报错 Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
产生原因:
启动的端口被占用,更换启动端口,或关闭占用端口的程序。
(4)AttributeError: 'dict' object has no attribute '_meta' 或者 TypeError: Object of type 'QuerySet' is not JSON serializable
from django.core import serializers def index(request): data = models.Record.objects.all() result = serializers.serialize("json", data) return HttpResponse(result)