什么是cem:django.template.loaders.app_directories 加载程序找不到模板文件

关于什么是cem的问题,在cem template loader中经常遇到, 模板文件保存在应用程序目录下,但在呈现时会引发 TemplateDoesNotExist 异常:

模板文件保存在应用程序目录下,但在呈现时会引发 TemplateDoesNotExist 异常:

模板加载器死后如下:

Django 尝试按以下顺序加载这些模板:

Using loader django.template.loaders.app_directories.Loader:
    ...
    $PROJECT/apps/myapp/templates/search.html (File does not exist)
    ...

我想知道为什么它看起来:

$PROJECT/apps/myapp/templates/search.html

而不是:

$PROJECT/apps/myapp/templates/myapp/search.html

后者确实存在

8

$PROJECT/apps/myapp/templates/search.html。这是它将作为doc says查找的路径。

django.template.loaders.app_directories.Loader将按顺序在所有INSTALLED_APPS中查找templates目录。

4

django.template.loaders.filesystem.load_template_source:此加载程序根据 TEMPLATE_DIRS 从文件系统加载模板。默认情况下已启用。

django.template.loaders.app_directories.load_template_source:此加载程序从文件系统上的 Django 应用程序加载模板。对于 INSTALLED_APPS 中的每个应用程序,加载程序都会查找一个 templates 子目录。如果该目录存在,则 Django 会在其中查找模板。

这意味着您可以将模板存储在单个应用程序中,从而可以轻松地使用默认模板分发 Django 应用程序。例如,如果 INSTALLED_APPS 包含('myproject.polls','myproject.music'),则 get_template('foo.html')将按以下顺序查找模板:

/path/to/myproject/polls/templates/foo.html
/path/to/myproject/music/templates/foo.html

请注意,加载器在首次导入时会执行优化:它缓存一个列表,其中包含具有 templates 子目录的 INSTALLED_APPS 包。

默认情况下启用此加载程序。

1

假设你有一个默认的项目和应用程序创建为

django-admin startproject xyz

django-admin startapp abc

xyz 和 abc 文件夹都在主项目文件夹中

需要进行以下最小更改才能使第一个模板正常工作

在 settings.py 更改 INSTALLED_APPS 添加“abc”(我忘了,失败)

在 urls.py 中添加

添加行:导入 abc.views

更改 urlpatterns 以添加路径 ('abc /',abc.views.index)

在 views.py 的索引定义中使用 loader.get_template ('abc / index.html')

创建 abc / templates / abc / index.html 文件(我写了“模板”,花了几个小时才意识到这是“模板”)

确保模板和内部文件夹具有执行权限,并且 html 文件具有“其他”用户的读取权限。(我作为 root 工作,由于此错误而失败)

重新启动项目(runserver 或 apache2 服务)

总结我的错误

编辑 INSTALLED_APPS

“模板”是默认的

设置 x 和 r 权限

0

确保您的应用已添加到settings.pyINSTALLED_APPS

确保apps.py中的配置名称与应用程序目录的名称相同。

class DemoConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'app'  # this must be the same as the parent directory

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(345)
单片机程序流程图:状态机图 VS流程图(uml state machine diagram)
上一篇
华硕a43sm:TCP端口43Whois服务器
下一篇

相关推荐

  • 什么时候在Django中使用get get_queryset get_context_data

    我最近了解到,当你特别想做一些不同于默认视图的事情时,你应该重写 get 方法:…

    2022-11-11 15:19:56
    0 87 83
  • python怎么安装django:如何使用Python安装Django

    确保安装了Python,并且Python的版本大于3.5。使用pip安装Django,在终端/命令行中输入以下代码:…

    2023-03-25 15:56:32
    0 21 19
  • cvt和自动挡哪个好提升驾驶体验的最佳选择

    CVT(可变转换器)是一种由传动带及传动轮组成的无级变速器,它可以在没有传动档位的情况下,根据驾驶者的驾驶习惯,自动调整传动轮之间的转速比,从而实现无级变速。自动挡是指车辆自动变速箱,它使用液力传动来实现变速,可以自动适应车辆的行驶状态,减少司机的疲劳,提高行车的舒适性。…

    2023-06-08 07:42:19
    0 51 24
  • cv一叶扁舟和清影轩阳:漫游在一叶扁舟和清影轩阳之间

    cv一叶扁舟是一款开源的计算机视觉库,用于图像处理、计算机视觉等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。清影轩阳是一款开源的计算机视觉框架,用于图像处理、目标检测、分类等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。…

    2023-08-05 07:06:20
    0 73 59
  • css设置滚动条宽度设置:This is a title

    CSS设置滚动条宽度的方法:使用CSS3的。-webkit-属性:…

    2023-06-06 10:53:01
    0 27 73
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-04-09 00:41:04
    0 94 62
  • cordon bleu是什么意思:法式炸鸡卷——Cordon Bleu的经典之作

    Cordon Bleu是一种烹饪技术,其中肉片被置于奶酪和火腿之间,然后用面包屑裹上,最后煎炸或烤熟。这种技术通常用于制作鸡肉,但也可以用于制作其他类型的肉类,如牛肉或猪肉。…

    2024-01-27 15:13:30
    0 71 69
  • countif 非空:非空单元格的计数

    Countif 非空是指计算某个单元格不为空的数量。代码如下:…

    2023-04-22 15:54:15
    0 97 63

发表评论

登录 后才能评论

评论列表(69条)