1. 程式人生 > 其它 >python測試開發django-174.模板中include傳遞引數

python測試開發django-174.模板中include傳遞引數

前言

模板標籤語法 {% include %} ,該標籤允許在(模板中)包含其它的模板的內容。
在多個模板中出現相同的程式碼時,就應該考慮是否要使用 {% include %} 來減少重複。

include 使用

如下這一段如果在多個地方會用到

<form action="" method="post" id="query_form">
  <div class="form-group">
      <label for="Email1">郵箱地址</label>
      <input type="text" class="form-control" id="Email1" name="email" placeholder="Email">
  </div>
  <div class="form-group">
      <label for="Password1">密碼</label>
      <input type="password" class="form-control" id="Password1" name="password"  placeholder="Password">
  </div>

  <input type="button"  id="save" class="btn btn-info" value="提交">
</form>

於是可以使用模板標籤語法 {% include %}

<body>

{% include 'form.html' %}

</body>

templates目錄可以新建一個includes目錄,專門放需要匯入的程式碼段,層級結構如下

<body>

{% include 'includes/form.html' %}

</body>

載入的模板名還可以在 view 層中定義, 下面的例子包含了以變數 template_name 的值為名稱的模板內容:

{% include template_name %}

include with 使用

一個網頁多次引入同一個子模版,子模板中有些是變數,可以用include with傳遞變數
如下form,我們希望id是可變的,每次引入傳不同的id值 {{ form_id }}

<form action="" method="post" id="{{ form_id }}">
  <div class="form-group">
      <label for="Email1">郵箱地址</label>
      <input type="text" class="form-control" id="Email1" name="email" placeholder="Email">
  </div>
  <div class="form-group">
      <label for="Password1">密碼</label>
      <input type="password" class="form-control" id="Password1" name="password"  placeholder="Password">
  </div>

  <input type="button"  id="save" class="btn btn-info" value="提交">
</form>

with給變數賦值

<body>

{% include 'includes/form.html' with form_id='login_form' %}

</body>

傳遞多個變數

<form action="" method="{{ method }}" id="{{ form_id }}">
    ......
</form>

多個變數用空格隔開

<body>

{% include 'includes/form.html' with form_id='login_form'  method='post'  %}

</body>

預設情況下子模版可以訪問父模板的所有變數,在 Django 中還可以通過使用 only 選項來阻止這個預設行為

{% include 'includes/form.html' with form_id='login_form'  method='post' only %}

with 標籤

另外 Django 還提供了單獨的 with 標籤來修改或者指定變數的值。
可以單獨使用,也可以搭配 include 標籤使用。使用方法如下:

<!-- 使用 with 標籤指定變數 -->

{% with form_id='login_form'  method='post' %}
    {% include 'includes/form.html' %}
{% endwith %}