出現TemplateDoesNotExist錯誤的原因有很多,常見的原因如下
1 文件路徑錯誤
解決辦法 看路徑是否設置正確
2 TEMPLATE_DIR 賦值格式錯誤,經常將字符串賦值給它,正確應該是元組
解決辦法
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIRS = ( os.path.join(BASE_DIR, 'templates').replace('\\', '/'), )
3 這就是本文的重點,被這個bug折騰了好幾個小時
解決辦法:
樓主一開始一直以為是上面兩種錯誤,但是嘗試了好多方法都還是不行,例如改為絕對路徑 ,例如不使用元組,但無論怎么改就是不行。
因為沒有意識到是Djang版本問題,一直在stackoverflow上把關於 TemplateDoesNotExist的問題一個一個看,
偶然之間發現了一個回答,附上鏈接 :TemplateDoesNotExist in project folder django 1.8
樓主環境是 Ubuntu 下 Python 3.4 Django 1.8
發現Django1.8,設置要加載模板的路徑時,不是直接自己定義一個TEMPLATE_DIR,然后給它賦值
而是修改TEMPLATE那里加上一個 DIR的值,
#settings.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
改完之后便能成功運行,故樓主認為是Django的版本問題。
本人才疏學淺,以上皆是一孔之見,如果有什么錯誤,望不吝賜教。
可隨意轉載,但請說明出處。