等同于Django模板的content_

2024-10-03 17:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法在Django中复制Rails的内容?在

用例如下:

# base.html
<html>
  <head>
    <script type='text/javascript' src='jquery.js'></script>
    {% yield 'head' %}
  </head>
  <body>
    {% block content %}{% endblock %}
  </body>
</html>

# page.html
{% extends 'base.html' %}
{% contentfor 'head' %}
<script type='text/javascript' src='some_library_only_for_this_page.js'></script>
{% endcontentfor %}

{% block content %}
This is the content for the page.
{% include 'widget.html' %}
{% endblock %}

# widget.html
{% contentfor 'head' %}
<script type='text/javascript' src='some_library_only_for_this_widget.js'></scirpt>
{% endcontentfor %}

<div id='the_html_for_the_widget'>
  ...
</div>

contentfor的行为与

^{pr2}$

但是请注意,block.super方法不能从widget.html内部工作。在

在Django做这件事的标准方式是什么?在

编辑:这里包含小部件,而不是小部件扩展页面,因为一个页面中可能包含许多小部件


Tags: thetextsrcforhtmltypepagejs
0条回答
网友
1楼 · 发布于 2024-10-03 17:26:04

尝试扩展小部件.html从页面.html模板。在

还可以看看Admin app@/site packages/django/contrib/Admin/templates中的模板(例如base_网站.html,更改_表单.html)在

# base.html
<html>
  <head>
    <script type='text/javascript' src='jquery.js'></script>
    {% block extrahead %}{% endblock %}
  </head>
  <body>
    {% block content %}{% endblock %}
  </body>
</html>


# page.html
{% extends "base.html" %}
{% block extrahead %}
    {{ block.super }}
    <script type='text/javascript' src='some_library_only_for_this_page.js'></script>
{% endblock %}

{% block content %}
    This is the content for the page.
{% endblock %}


# widget.html
{% extends "page.html" %}

{% block extrahead %}
    {{ block.super }}
    <script type='text/javascript' src='some_library_only_for_this_widget.js'></script>
{% endblock %}

{% block content %}
    {{ block.super }}   
    <div id='the_html_for_the_widget'>
    </div>
{% endblock %}

更新: 关于更新的问题。在

创建一个基本的widget类,并将其用于存储在单独模块中的其他widget,例如。小工具.py. 在

这些小部件应该传递给页面.html通过请求处理例程的模板。视图.py. 在

^{pr2}$
网友
2楼 · 发布于 2024-10-03 17:26:04

我使用Django{%block%}模板标记以完全相同的方式构建内容。。。在

{页面.html#} {%扩展'基本.html'%}

{%block head%} {{ 超级街区}} {%include“共享/我的”_小部件.html' %} {endblock%}

块可以出现在任何地方,也可以填充任何内容。包含在块中的任何内容都可以识别请求上下文中的对象和属性。如果您需要将变量传递给一个函数,然后该函数会呈现一些内容,比如在Rails中render_partial,那么您需要查看模板标记。在

谨致问候, 布兰登

相关问题 更多 >