0

我是 django 的初学者,我需要一些建议。

我正在尽可能多地创建可重用的 django 应用程序,这些应用程序将用于多个不同的项目。但我不知道如何处理模板。

如果我有一个应用程序管理用户,我认为允许添加、删除或列出用户的模板应该位于应用程序中而不是项目中。模板项目应该定义页眉、页脚和一般组织(如果我错了,请纠正我)。

但是,如果我想使用模板继承,我将在我的应用程序模板中扩展项目模板:

{% extends "base.html" %} {% block content %} ... {% endblock %}

因此,在开发我的可重用应用程序时,我假设我的项目将有一个名为base.html的模板,其中包含块内​​容,并且在我看来,这些信息不应位于应用程序级别,而应位于项目级别。在某些项目中,我希望在块内容中显示用户,但不一定在其他项目中。例如,我可能想在同一页面的多个位置显示用户信息......

你如何开发你的应用程序模板来绕过这个限制?

提前致谢,

账单

4

3 回答 3

0

您所描述的可能最好使用自定义模板标签来解决,特别是inclusion tags.

于 2013-06-17T13:50:49.410 回答
0

我会做一个包含页眉和页脚的基本 html 模板,以及许多扩展基本模板的可重用模板,其中包含我需要的不同布局。我还将创建可重用的组件(图块、数据网格......)。

对于模板:

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>
于 2022-01-26T14:10:42.333 回答
-1

django-admin.py 收集静态

阅读文档

使用启用的查找器搜索文件。默认是查看 STATICFILES_DIRS 中定义的所有位置以及 INSTALLED_APPS 设置指定的应用程序的“静态”目录。

于 2013-06-17T13:15:28.657 回答