記錄自己在使用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)