2015-09-14 100 views
3

我的Django的模板位置被列爲:TemplateDoesNotExist Django的

python\Lib\site-packages\django\contrib\auth\templates 

在我看來,我有:

​​

當我繼續在此位置hello.html它的工作

python\Lib\site-packages\django\contrib\auth\templates 

雖然我保留模板位置爲

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates'), 
) 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [], 
     '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', 
      ], 
     }, 
    }, 

]

NewProject 
    -NewProject 
     settings.py 
    -signups 
     view.py 
      def hello(request): 
       name='vijay' 
       return render_to_response('hello.html',{'name':name}) 
    templates 
     hello.html 
+0

而不是說不起作用,爲什麼你不仔細看堆棧跟蹤看看它說什麼,如果你需要幫助,將它添加到問題。 – e4c5

+0

@ user1844634什麼是django版本? –

+0

我正在使用1.8.4 – user1844634

回答

2

如果你在你的settings.py文件中定義TEMPLATESTEMPLATE_DIRS不會有任何影響。你應該從TEMPLATE_DIRS移動值到DIRS子裏面設置TEMPLATES

此外,os.path.join(os.path.dirname(__file__), 'templates')將生成相對於settings.py文件的模板目錄的路徑,但您的模板文件夾是settings.py以上的一個目錄。這條線應該是這樣的:

os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates') 

快速的解釋:它會帶路徑的settings.py,得到它的父目錄的路徑,獲得該目錄的父目錄路徑和膠水把它你的文件夾名稱。因此,所有的應該是這樣的:

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

實際上,路徑到項目目錄它在默認settings.py已經定義,因此,如果您正在使用默認的,您可以將其簡化爲:

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', 
      ], 
     }, 
    }, 
] 
+0

即使它沒有工作。 – user1844634

+0

如果您的模板路徑正確,請檢查兩次。你可以在你的'settings.py'文件中打印它,並通過'manage.py'運行開發服務器,它將顯示'os.path.join'和'os.path.dirname'建立的完整路徑。 – GwynBleidD

+0

我在主查詢中添加了文件夾結構。在settings.py我定義模板 – user1844634