Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 扩展已在Django中扩展的模板_Python_Django - Fatal编程技术网

Python 扩展已在Django中扩展的模板

Python 扩展已在Django中扩展的模板,python,django,Python,Django,我试图找出是否有一种方法可以将部分视图扩展为已经扩展base.html的视图 下面是我尝试做的一个例子: 我的模板.html {% extends 'base.html '%} <div class="row"> <div class="col-xs-12"> <ul class="nav nav-tabs"> <li role="presentation" class="active"><a href="#">

我试图找出是否有一种方法可以将部分视图扩展为已经扩展base.html的视图

下面是我尝试做的一个例子:

我的模板.html

{% extends 'base.html '%}

<div class="row">
  <div class="col-xs-12">
    <ul class="nav nav-tabs">
      <li role="presentation" class="active"><a href="#">Tab1</a></li>
      <li role="presentation"><a href="#">Tab2</a></li>
    </ul>
  </div>
</div>

<div>
{% block tab_content %}
{% endblock %}
</div>
{% extends 'my-template.html' %}

{% block tab_content %}
<h1>I'm partial 1</h1>
{% endblock %}
{%extends'base.html%}
{%block tab_content%} {%endblock%}
partial1.html

{% extends 'base.html '%}

<div class="row">
  <div class="col-xs-12">
    <ul class="nav nav-tabs">
      <li role="presentation" class="active"><a href="#">Tab1</a></li>
      <li role="presentation"><a href="#">Tab2</a></li>
    </ul>
  </div>
</div>

<div>
{% block tab_content %}
{% endblock %}
</div>
{% extends 'my-template.html' %}

{% block tab_content %}
<h1>I'm partial 1</h1>
{% endblock %}
{%extensed'my template.html%}
{%block tab_content%}
我是偏一
{%endblock%}
my-template.html视图具有如下构造的url:

url(r'^my-template/(?P<id>[0-9]+)/$', views.my_template_view, name='my-template')
url(r'^my-template/(?P[0-9]+)/$,views.my_-template_视图,name='my-template')
此外,一个上下文dict被传递到my_template_视图中,该视图提供url的id

我希望用户单击选项卡,并使用如下url呈现相应的部分:

url(r'^my-template/(?P<id>[0-9]+)/tab1/$', views.tab1_view, name='tab1-view')
url(r'^my template/(?P[0-9]+)/tab1/$,views.tab1_view,name='tab1-view')
但是现在我在/my template/97/tab1/上得到了一个NoReverseMatch,我假设这意味着我的tab1_视图无法访问与my_template_视图相同的上下文,因此无法获取id来构建与我的url相反的内容

In template /partial1.html, error at line 0
Reverse for 'tab1_view' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['/my-template/(?P<id>[0-9]+)/tab1/$']
template/partial1.html中的
,第0行出错
找不到参数“(“”,)”和关键字参数“{}”的“tab1_视图”的反向。已尝试1个模式:['/my template/(?P[0-9]+)/tab1/$']

那么,至少有没有一种方法可以让我传递上下文或id以使其正常工作,或者我是以完全错误的方式进行的?

解决这一问题的典型方法是使用
include
模板标记,而不是使用新模板进行扩展

您甚至可以使用变量来定义动态模板名称,该名称将根据视图中的逻辑包括在内

这里再澄清一下:

您还可以将URL路由直接发送到同一视图,并将“tab”作为第二个参数(可选)传入,如下所示:

url(r'^my-template/(?P<id>[0-9]+)/(?P<tab_name>\w+)/$', views.my_template_view, name='my-template')
url(r'^my-template/(?P<id>[0-9]+)/$', views.my_template_view, name='my-template')
在模板上,您将有:

{% include partial %}
因为包含的模板将具有相同的上下文,所以您也可以访问原始上下文中可用的任何变量


编辑2020/09/04:如以下评论所述,上述页面不再存在。我已将上述链接更新为1.11分支中的最新版本,但对于Django的最新版本(本次编辑时为3.1)。

您尚未显示导致错误的回溯或视图/模板代码。好的,我正在尝试,但我不确定如何根据单击的选项卡将不同的视图包含到my-template.html中?你有这个逻辑的起点吗?:)检查我的最新编辑。你还需要更多吗?好的,我感觉我就快到了,但是我的模板视图如何在单击时获得选项卡名称呢?这取决于你想如何处理它。您可以使用类似于
onclick=“location.href=”{%url”我的模板“id”tab2“%}”的内容刷新页面。
或者您也可以使选项卡视图仅呈现部分模板,并使用AJAX加载它。应答中的链接不再工作,但这是最新信息