簡體   English   中英

Django'DIRS':settings.py模板中的[]導致“ TemplateDoesNotExist”錯誤

[英]Django 'DIRS': [] in settings.py TEMPLATES causes “TemplateDoesNotExist” Error

我正在使用Django 3.6的Django版本2.1.2。

我用CMD創建了兩個django項目(test01和test02)。 這兩個項目都在同一文件夾下。 Test01正常執行,而test02引發TemplateDoesNotExist錯誤。 在此處輸入圖片說明

我發現了后者的解決方案,該解決方案是在settings.py中硬編碼模板的地址:

'DIRS':[r'C:\\ django \\ test02 \\ accounts \\ templates']

但是,即使將該列表留為空白[],另一個項目也可以正常運行。

這兩個項目的結構相同: 在此處輸入圖片說明

誰能提出一個建議,在不對test02中的模板地址進行硬編碼的情況下解決test02中的問題?

您可能會注意到一個名為BASE_DIR的內置Django變量,它代表您的根項目,因此您無需對絕對路徑進行硬編碼。

在設置中添加

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # codes...
            ],
        },
    },
]

注冊所有應用程序,然后Django將在os.path.join(BASE_DIR, 'templates')提到的名為templates的文件夾中查找任何文件。

讓我們在模板中創建一個名為“ test01App”的文件夾,並在其上創建base.html。 那么您可以致電“ test01App / base.html”作為回應。
BACKEND是django的默認設置,您必須創建文件夾“ templates”。 您可以自定義DIRS中其他位置的模板存儲位置。

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, './cuong')],
    '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',
        ],
    },
},

]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM