用于javascript客户端框架的模板的辅助工具:允许将小的Django模板存储在一个目录中,并生成一个包含所有模板的JavaScript对象(作为字符串)
项目描述
# 简介
通常,当您使用客户端JavaScript框架(例如backbone/ember/angular/wathever)时,您会想要一些小的模板来渲染您的页面。问题是当
* 您仍然想使用Django模板引擎
* 并且您想要一个合适的地方来定义您的小模板。
这两个问题就是此Django应用程序试图解决的问题。它还提供了一些针对此类模板的辅助功能,如Django 1.5 dev代码中的`verbatim` templatetags,它允许您定义一个区域,其中Django不会解释任何内容,以避免与模板语言(如`mustache.js`)冲突。
有了它,您可以在同一目录下定义所有小模板,并可以通过包含由Django渲染的模板的`fragments` JavaScript对象访问它们。
# 安装
从pip
pip安装django-template-fragments
从setup.py
git clone git://github.com/Psycojoker/django-template-fragments.git
cd django-template-fragments
python setup.py install
创建一个目录以存储您的片段,然后向您的`settings.py`添加`FRAGMENTS_DIR`,它必须是一个绝对路径。
我喜欢这样定义我的`FRAGMENTS_DIR`
import os
PROJECT_PATH = os.path.abspath(os.path.split(__file__)[0])
SUBPROJECT_PATH = os.path.split(PROJECT_PATH)[0]
FRAGMENTS_DIR = os.path.join(SUBPROJECT_PATH, "fragments")
这将将其设置为`project_name/fragments`目录(其中`settings.py`位于`project_name/project_name/settings.py`中)。
接下来,在此目录中编写一些小的HTML片段。
然后向您的`urls.py`添加类似的内容
url(r'^', include('fragments.urls')),
并在您的基模板的某个位置
<script type="text/javascript" src="{% url fragments %}" />
这将为您提供一个包含所有片段的JavaScript对象`fragments`,其键是片段的文件名(不带扩展名)。
示例:`object_list.html`将可在此`fragments`对象中访问,如下所示:`fragments.object_list`
如果您将片段放入`FRAGMENTS_DIR`的子目录中,则键将是去除扩展名的文件名与子目录路径连接,其中`/`被`_`替换。
不清楚?以下是一个例子:文件`FRAGMENTS_DIR/one/two/three.html`将通过键`one_two_three`访问。
# HamlPy 支持
如果您已安装 [HamlPy](https://github.com/jessemiller/HamlPy) 并且片段名称以 `.haml` 结尾,则 django-template-fragments 会考虑它并使用 HamlPy 生成 html。
# 文本标签
**您必须在 settings.py 中将 `fragments` 添加到您的已安装应用中才能使其生效**。
我已从 django 1.5 的开发分支中提取代码,以允许使用
[verbatim](https://docs.django.ac.cn/en/dev/ref/templates/builtins/#verbatim)
templatetags,以避免 django 模板语法与其他
模板引擎语法(例如 mustache)之间的冲突。
示例
{% load fragments %}
{{ will_be_interpreted }}
{% verbatim %}
{{ wont_be_interpredted }}
{% endverbatim %}
您也可以选择特定的关闭标签,如 django 文档中所述。
文档中的示例
{% load fragments %}
{% verbatim myblock %}
避免通过 {% verbatim %}{% endverbatim %} 块进行模板渲染。
{% endverbatim myblock %}
# 忽略的文件扩展名
默认情况下,`django-template-fragments` 忽略以下扩展名的所有文件:`.pyc` `.swo` `.swp` `~`
您可以在 `settings.py` 中定义自己的列表,通过定义 `FRAGMENTS_IGNORED_FILE_TYPES`。
通常,当您使用客户端JavaScript框架(例如backbone/ember/angular/wathever)时,您会想要一些小的模板来渲染您的页面。问题是当
* 您仍然想使用Django模板引擎
* 并且您想要一个合适的地方来定义您的小模板。
这两个问题就是此Django应用程序试图解决的问题。它还提供了一些针对此类模板的辅助功能,如Django 1.5 dev代码中的`verbatim` templatetags,它允许您定义一个区域,其中Django不会解释任何内容,以避免与模板语言(如`mustache.js`)冲突。
有了它,您可以在同一目录下定义所有小模板,并可以通过包含由Django渲染的模板的`fragments` JavaScript对象访问它们。
# 安装
从pip
pip安装django-template-fragments
从setup.py
git clone git://github.com/Psycojoker/django-template-fragments.git
cd django-template-fragments
python setup.py install
创建一个目录以存储您的片段,然后向您的`settings.py`添加`FRAGMENTS_DIR`,它必须是一个绝对路径。
我喜欢这样定义我的`FRAGMENTS_DIR`
import os
PROJECT_PATH = os.path.abspath(os.path.split(__file__)[0])
SUBPROJECT_PATH = os.path.split(PROJECT_PATH)[0]
FRAGMENTS_DIR = os.path.join(SUBPROJECT_PATH, "fragments")
这将将其设置为`project_name/fragments`目录(其中`settings.py`位于`project_name/project_name/settings.py`中)。
接下来,在此目录中编写一些小的HTML片段。
然后向您的`urls.py`添加类似的内容
url(r'^', include('fragments.urls')),
并在您的基模板的某个位置
<script type="text/javascript" src="{% url fragments %}" />
这将为您提供一个包含所有片段的JavaScript对象`fragments`,其键是片段的文件名(不带扩展名)。
示例:`object_list.html`将可在此`fragments`对象中访问,如下所示:`fragments.object_list`
如果您将片段放入`FRAGMENTS_DIR`的子目录中,则键将是去除扩展名的文件名与子目录路径连接,其中`/`被`_`替换。
不清楚?以下是一个例子:文件`FRAGMENTS_DIR/one/two/three.html`将通过键`one_two_three`访问。
# HamlPy 支持
如果您已安装 [HamlPy](https://github.com/jessemiller/HamlPy) 并且片段名称以 `.haml` 结尾,则 django-template-fragments 会考虑它并使用 HamlPy 生成 html。
# 文本标签
**您必须在 settings.py 中将 `fragments` 添加到您的已安装应用中才能使其生效**。
我已从 django 1.5 的开发分支中提取代码,以允许使用
[verbatim](https://docs.django.ac.cn/en/dev/ref/templates/builtins/#verbatim)
templatetags,以避免 django 模板语法与其他
模板引擎语法(例如 mustache)之间的冲突。
示例
{% load fragments %}
{{ will_be_interpreted }}
{% verbatim %}
{{ wont_be_interpredted }}
{% endverbatim %}
您也可以选择特定的关闭标签,如 django 文档中所述。
文档中的示例
{% load fragments %}
{% verbatim myblock %}
避免通过 {% verbatim %}{% endverbatim %} 块进行模板渲染。
{% endverbatim myblock %}
# 忽略的文件扩展名
默认情况下,`django-template-fragments` 忽略以下扩展名的所有文件:`.pyc` `.swo` `.swp` `~`
您可以在 `settings.py` 中定义自己的列表,通过定义 `FRAGMENTS_IGNORED_FILE_TYPES`。