【问题标题】:Templates not found Django找不到模板 Django
【发布时间】:2020-05-27 03:59:11
【问题描述】:

我正在尝试“轻量级 Django_ 使用 REST、Websockets 和 Backbone [Elman & Lavin 2014-11-13]”中提到的这个项目,但在这个项目中,当我找不到我的模板时,我被卡住了,任何人都可以帮助解决这个问题

我的设置是


import os
import sys

from django.conf import settings
DEBUG = os.environ.get('DEBUG', 'on') == 'on'
SECRET_KEY = os.environ.get('SECRET_KEY',
 '%jv_4#hoaqwig2gu!eg#^ozptd*a@88u(aasv7z!7xt^5(*i&k')
ALLOWED_HOSTS = []
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
settings.configure(
 DEBUG=DEBUG,
 SECRET_KEY=SECRET_KEY,
 ALLOWED_HOSTS=ALLOWED_HOSTS,
 ROOT_URLCONF=__name__,
 MIDDLEWARE_CLASSES=(
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 ),
 INSTALLED_APPS=(
 'django.contrib.staticfiles',
 ),


 TEMPLATE_DIRS=(
 os.path.join(BASE_DIR, 'templates'),
 ),
 STATICFILES_DIRS=(
 os.path.join(BASE_DIR, 'static'),
 ),
 STATIC_URL='/static/',
)

我的观点是

def index(request):
    example = reverse('placeholder', kwargs={'width': 50, 'height':50})
    context = {
    'example': request.build_absolute_uri(example)
    }
    return render(request, 'home.html', context)



#and urls are

urlpatterns = (
 url(r'^image/(?P<width>[0-9]+)x(?P<height>[0-9]+)/$', placeholder,
 name='placeholder'),
 url(r'^$', index, name='homepage'),
)

我在文件夹中的模板顺序是

 - foo    
 -     templates
 -          home.html
 -     static       
 -          site.css

click for Error page

【问题讨论】:

  • 可以分享一下错误信息吗?

标签: python html django web backend


【解决方案1】:

尝试更新您的项目根目录和目录信息:

PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, 'templates'),)

【讨论】:

    【解决方案2】:

    根据您的设置,

    TEMPLATE_DIRS=(
     os.path.join(BASE_DIR, 'templates'),
     ),
    

    Django 正在&lt;PROJECT_DIR&gt;/templates 中寻找模板。但是,如果我没记错的话,您似乎在 foo 应用程序中有模板。

    所以,您想告诉 Django 也检查您的应用程序。请查看template settings documentation。您可能需要APP_DIRS: True 以便 Django 模板引擎也会查看您的应用程序。

    当 APP_DIRS 为 True 时,DjangoTemplates 引擎会在已安装应用程序的模板子目录中查找模板。保留此通用名称是为了向后兼容。

    注意:将foo 添加到您的INSTALLED_APPS 设置中。

    【讨论】:

    • 实际上是这个项目名称,正如我提到的,我指的是上面的标题书,所以在那里他们只制作了一个文件并添加了所有文件的代码,如(views.py、settings.py 和所有其他文件,所以在这种情况下,没有应用程序没有 mange.py 只有一个 foo.py)
    • @R.K.Guleria 你的 django 版本是什么?
    • 我正在使用 django 2.1.1
    猜你喜欢
    • 2018-01-02
    • 2012-07-10
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多