模板不存在于/(给定网址)

时间:2017-05-21 14:54:56

标签: python django

它适用于localhost,但在生产中它显示此错误:

TemplateDoesNotExist at /tcapp/tcpage

应用程序/ urls.py

from django.conf.urls import url 
from .import views

urlpatterns = [
    url(r'^tcapp/tcpage', views.tcpage, name='tcpage'),
    url(r'^tcapp/tcappretrive', views.tcappretrive, name='tcappretrive'),
    url(r'^tcapp/home',views.tcpage,name='tcpage'),
    url(r'^tcapp/work',views.work,name='work'),
    url(r'^tcapp/s&c',views.support,name='support'),
]

模板:

  • home.html的
  • work.html
  • S&安培; c.html

可能导致此错误消息的原因是什么?

2 个答案:

答案 0 :(得分:0)

这可能是这个原因 -

  1. 您的设置是否包含正确的模板目录? 您可能需要在settings.py -

    中检查TEMPLATE_DIR设置
      TEMPLATES = [
                    {
                      'BACKEND': 'django.template.backends.django.DjangoTemplates',
                      'DIRS': [
                          '/home/html/example.com',
                          '/home/html/default',
                         ],
                     },
                   {
                    'BACKEND': 'django.template.backends.jinja2.Jinja2',
                    'DIRS': [
                            '/home/html/jinja2',
                            ],
                    },
        ]
    

    了解更多结果this

  2. 此外,您可能需要使用os.path函数添加模板目录。

  3. 如果这可以解决您的问题,请告诉我。

答案 1 :(得分:0)

模板在settings.py中设置

remove()

第一个1)路径

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        '/var/www/rsa/html', #1) this sets a static path
        os.path.join( PROJECT_PATH, 'templates').replace('\\','/'), #2) this sets a dynamic path
    ],
    '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',
        ],
    },
},
]

只是说所有模板都可以在这个绝对路径上使用。不是真的推荐。我更喜欢根据应用设置模板的第二个选项。

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))

只是意味着您使用

创建的任何应用程序
os.path.join( PROJECT_PATH, 'templates').replace('\\','/'),

在该app文件夹中,您可以创建一个名为" templates"的文件夹。并在那里放置你想要的任何模板。

扩展静态文件夹中的模板,&在动态文件夹中有特定于应用程序的模板。

在一个名为countries的应用中 你可以在

中有一个模板

/countries/templates/display.html

你可以拥有

./manage startapp app_name

希望有所帮助。

P.S。搜索模板按顺序列出,首先是静态,然后查看动态位置。 如果在模板中找到app.html,那么django将停在那里,不会再看了。