跳转到主要内容

将任何您希望嵌入到您的Django应用程序文本中的内容。

项目描述

这是什么?

Django Inlines是一个应用程序,让您可以使用其他对象和特殊位嵌入到您的文本字段中。

它使用注册风格,因此很容易为您的任何应用程序或第三方应用程序设置内嵌。

示例

注册您的内嵌

from django_inlines import inlines
from django_inlines.samples import YoutubeInline

inlines.registry.register('youtube', YoutubeInline)

在您的 entry.body

<p>Check out my new video:</p>

{{ youtube http://www.youtube.com/watch?v=RXJKdh1KZ0w }}

在您的模板中

{% load inlines %}
{% process_inlines entry.body %}

输出

<p>Check out my new video:</p>

<div class="youtube_video">
  <object width="480" height="295">
    <param name="movie" value="http://www.youtube.com/v/RXJKdh1KZ0w&hl=en&fs=1"></param>
    <param name="allowFullScreen" value="true"></param>
    <param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/v/RXJKdh1KZ0w&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed>
  </object>
</div>

创建内嵌

内嵌可以是任何提供 render 方法并且具有可以接受以下参数的 __init__ 方法的类

__init__(self, value, variant=None, context=None, template_dir="", **kwargs)

Django Inlines附带基本内嵌类,您可以通过继承来创建自己的内嵌。

inlines.InlineBase

一个基类,用于提供简单的内嵌。唯一的必需覆盖是 render 方法。它应该返回一个字符串或至少可以强制转换为字符串的某种东西。

inlines.TemplateInline

一个基类,用于提供模板内嵌。唯一的必需覆盖是 get_context 方法。它应该返回类似字典的对象,该对象将被作为上下文传递到模板中。

如果您使用上下文实例实例化您的内嵌类,它将使用该实例设置基本上下文。

分配给您的内嵌的任何额外参数将直接传递到上下文中。

请参阅 samples.YoutubeInline 了解 TemplateInline 子类的示例。

模板内嵌渲染与它们注册的名称相同的模板。YouTube内嵌使用 inlines/youtube.html

inlines.ModelInline

Django模型内联的基类。只有 model 类属性是必须重写的。它应该被分配一个Django模型类。

一个示例模型内联

from myapp.models import Photo

class PhotoInline(inlines.ModelInline):
  model = Photo

inlines.registry.register('photo', PhotoInline)

使用方法

{{ photo 1 }}

ModelInlines使用对象的 id 作为其唯一值,并将该对象作为 object 传递到上下文中。

由于模型内联将被非常频繁地使用,因此有一个 inline_for_model 快捷方法。它可以用来直接注册模型为内联。

from django_inlines.inlines import inline_for_model
inlines.registry.register('photo', inline_for_model(Photo))

内联语法

Django内联使用以下语法 {{ name[:variant] value [argument=value ...] }}

name

内联注册的名称。模板内联将其用作模板的基本名称。

value

任何字符串。这是内联类解析此字符串的要求。

variant 可选

变体可以由内联类用来改变行为。默认情况下,任何渲染模板的内联都会使用此来检查备用模板。 {{ youtube:hd <videourl> }} 会首先检查 inlines/youtube.hd.html,然后再检查 inlines/youtube.html

arguments 可选

内联末尾可以允许任意数量的键=值对。这些将直接作为上下文变量传递到模板中。 {{ youtube:hd <videourl> width=400 height=200 }}

模板标签

在提供的内容中搜索并应用内联,将当前模板上下文传递到内联模板中。

语法

{% process_inlines entry.body [in template_dir] [as varname] }

示例

{% process_inlines entry.body %}

{% process_inlines entry.body as body %}

{% process_inlines entry.body in 'inlines/sidebar' %}

{% process_inlines entry.body in 'inlines/sidebar' as body %}

如果给出了可选的 template_dir 参数,内联将首先在该目录中检查模板,然后再回退到 inlines/<inline_name>.html

如果给出了 [as varname],该标签不会返回任何内容,而是将 varname 填充到您的上下文中。然后您可以应用过滤器或测试输出。

设置

您可以在您的 settings.py 中覆盖一些设置。

  • INLINE_DEBUG = True:通常内联错误会静默失败。将其设置为 True 会引发内联可能产生的所有异常。默认: False

  • INLINES_START_TAG = '{{':内联语法中使用的开始标签。默认: '{{'

  • INLINES_END_TAG = '}}':内联语法中使用的结束标签。默认: '}}'

待办事项

警告: Django内联仍在开发中。这里的一切都已经过充分测试和功能化,但尚未保证稳定性。重要的部分尚不存在。这些包括

  • 更好的文档。

  • 在您的应用中自动发现 inlines.py 的管理风格。

  • 向基类添加验证钩子。

  • 添加一个模型字段和用于验证以及在管理中改进添加的部件。

更改

0.7.2

错误修复

  • 参数现在工作正常(感谢Martin Mahner)。

  • 修复了偶尔会导致传递值错误分割的正则表达式错误。

新增

  • START_TAG和END_TAG现在可以通过设置进行控制。

0.7.1

  • 包含来自Jannis Leidel的修复,现在实际上可以在Pypi上工作。感谢Jannis!

0.7

  • 首次公开发布

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

django_inlines-0.7.4.tar.gz (12.1 kB 查看哈希值)

上传时间

由以下提供支持