2015-09-14 101 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