模板 Django 应用程序扩展模板 django 项目
Posted
技术标签:
【中文标题】模板 Django 应用程序扩展模板 django 项目【英文标题】:Template Django application extending template django project 【发布时间】:2013-06-13 10:28:55 【问题描述】:我是 django 的初学者,我需要一些建议。
我正在尽可能多地尝试创建可重用的 django 应用程序,这些应用程序将用于多个不同的项目。但我不知道如何处理模板。
如果我有一个应用程序管理用户,我认为允许添加、删除或列出用户的模板应该位于应用程序中而不是项目中。模板项目应该定义页眉、页脚和一般组织(如果我错了,请纠正我)。
但是,如果我想使用模板继承,我将在我的应用程序模板中扩展项目模板:
% 扩展“base.html”% % 块内容 % ... % endblock %
所以在开发我的可重用应用程序时,我假设我的项目将有一个名为base.html的模板,其中包含一个块content,在我看来,这些信息不应位于应用程序级别,而应位于项目级别。在某些项目中,我希望在块内容中显示用户,但在其他项目中不一定。例如,我可能希望在同一页面的多个位置显示用户信息...
你如何开发你的应用程序模板来绕过这个限制?
提前致谢,
比尔
【问题讨论】:
这个***.com/questions/16498176/… 可能对你有帮助 【参考方案1】:您所描述的可能最好使用自定义模板标签来解决,特别是inclusion tags
。
【讨论】:
【参考方案2】:我会做一个包含页眉和页脚的基本 html 模板,以及许多扩展基本模板的可重用模板,包含我需要的不同布局。我还会创建reusable components(磁贴、数据网格...)。
对于模板:
base.html
<!doctype HTML>
<html>
<head>
....
</head>
<body>
% block content %
</body>
</html>
3_columns.html
% extends "project/base.html" %
% block content %
<div class="line">
<div class="column">% block col1 %</div>
<div class="column">% block col2 %</div>
<div class="column">% block col3 %</div>
</div>
% endblock %
2_lines.html
% extends "project/base.html" %
% block content %
<div class="line">% block line1 %</div>
<div class="line">% block line2 %</div>
% endblock %
一个基本的自定义组件:
模板标签/custom.py
import django
from django.template.defaulttags import register
@register.inclusion_tag('components/custom.html')
def custom(params):
context =
'a': params['a'],
'b': params['b']
return context
模板/组件/custom.html
<div class="custom">
<label> a
<input name= b
</label>
</div>
【讨论】:
【参考方案3】:django-admin.py collectstatic
阅读docs
使用启用的查找器搜索文件。默认是查看 STATICFILES_DIRS 中定义的所有位置以及 INSTALLED_APPS 设置指定的应用程序的“静态”目录。
【讨论】:
我的问题与静态文件无关。我的问题是关于扩展项目模板。以上是关于模板 Django 应用程序扩展模板 django 项目的主要内容,如果未能解决你的问题,请参考以下文章