当前位置: 首页 > 面试题库 >

Django小部件模板替代不会在项目模板目录中搜索。怎么修?

叶德本
2023-03-14
问题内容

我试图覆盖Django
1.11中的内置窗口小部件模板。在这方面,我似乎正在做文档中说的所有事情,但是对于小部件模板,Django根本不在我的项目中查找,并且我收到TemplateDoesNotExist错误。

这是我要覆盖的内容:

class MyFileWidget(widgets.FileInput):
    template_name = 'myapp/my_file_widget.html'

模板肯定在那里。如果我将模板传递给渲染调用,它将很好。问题是路径的问题。从视图调用render时,它将检查以下内容:

projectroot / templates / myapp / my_file_widget.html djangoroot / forms /
templates / myapp / my_file_widget.html

当它在我的项目中找到模板时,将对其进行渲染。当我在上面的类中提供模板路径时,不会发生这种情况。在那种情况下,它不会检入文件实际存在的项目模板,而是开始检入django路径(不存在)。因此,错误消息

因此,我不知道为什么加载器会在渲染调用时检查我的项目模板,但是在寻找小部件替代的“ template_name”时却没有这样做。有任何想法吗?


问题答案:

默认情况下,该FORM_RENDERER设置默认为'django.forms.renderers.DjangoTemplates'

这会检查您的应用程序的模板目录(例如projectroot/myapp/templates/myapp/my_file_widget.html),但不会检查您的项目的模板目录(例如projectroot/templates/myapp/my_file_widget.html)。

如果要使用与TEMPLATES设置相同的配置,则应使用TemplatesSetting渲染器。

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'

您还需要更新TEMPLATES设置,以便Django仍可以使用内置的窗口小部件模板。最简单的方法是将添加django.formsINSTALLED_APPS。有关更多信息,请参阅文档。



 类似资料:
  • 模板 ,cmf 的模板分为前台模板和后台模板,它们都位于public/themes,只是后台模板目录名会以 admin开头,前后台都支持多模板; 前台默认模板simpleboot3目录结构: 模板目录下包含所有应用视图目录,比如 portal 应用视图目录就是 simpleboot3/portal; 后台默认模板也和前台目录结构类似,它位于public/themes/admin_simpleboo

  • 模板 cmf 的模板分为前台模板和后台模板,它们都位于public/themes,只是后台模板目录名会以 admin开头,前后台都支持多模板; 前台默认模板simpleboot3目录结构: 模板目录下包含所有应用视图目录,比如 portal 应用视图目录就是 simpleboot3/portal; 后台默认模板也和前台目录结构类似,它位于public/themes/admin_simpleboot

  • 问题内容: 我是django的新人。 我想创建一个自定义窗口小部件。 forms.py: widget.py: project / widgets / filter.html: 但是它不会呈现新模板,而是仍然呈现旧方法。 你能给我一些提示吗? 问题答案: Django版本 <1.11: 小部件必须实现该方法才能呈现不同的模板: Django 1.11版: 在渲染器的文档中,我们可以找到以下内容:

  • 问题内容: 我对Django有一个奇怪的问题。我会像平时一样在模板中循环遍历一组对象。但是,我需要将项目分为三部分。页面的布局如下所示: 绘画1-绘画2-绘画3 描述1 描述2 描述3 绘画4-绘画-5绘画6 说明4 说明5 说明6 等 我不能弄清楚真正做到这一点的最好的Django标签集。似乎有些棘手。{%cycle%}语句并没有太大帮助。 除非当然,否则我会进行某种形式的Java脚本黑客攻击,

  • cocos2d-x_linux_qt_template 是给cocos2d-x在*nix平台补充了一个qt项目模板,平时我做项目都在用。 比起官方的makefile要更容易管理项目,比起eclipse的cdt要更适合做C++的开发。 配置也特别简单。 不知道有少人跟我一样在linux上进行cocos2d-x游戏的编程工作。 希望能方便一些同胞吧。 这里有一个简单的预览: http://www.co

  • 我创建了新项目,但找不到出错的地方。 Django versiob - 3.1.5 蟒蛇 3.7.4 模板DoesNotExist位于/index。html请求方法:GET请求URL:http://127.0.0.1:8000/Django版本:3.1.5异常类型:TemplateDoesNotExist异常值: 索引。html异常位置:C:\Users\user\PycharmProjects\