Есть ли что-то вроде общих шаблонов в django, как общие виды - PullRequest
6 голосов
/ 28 июня 2011

Общий вид сохранил много кода для меня, но мне все еще приходится писать шаблоны для каждой модели.У меня один и тот же код во всем шаблоне, т.е.

<form action="/{{type}}/{{ action }}/" method="post" enctype="multipart/form-data" >
    {% csrf_token %}
    {% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>
    {% endfor %}
    <p><input type="submit" value="Submit" /></p>
    </form>

, т. Е. В основном я хочу, чтобы все поля модели были добавлены или изменены.

есть ли способ обойти универсальный шаблон автоматически

Ответы [ 3 ]

1 голос
/ 28 июня 2011

Если у вас есть шаблонный код, который идентичен , вы можете использовать include tag :

{% include "foo/bar.html" %}

И включенный код можно изменить с помощью переменных:

{% include "name_snippet.html" with person="Jane" %}

Даже если код отличается для каждого шаблона (я думаю, что ваш пример говорит о формах, имеющих разные поля, не уверен), вы все равно можете использовать include - просто сделайте дваблоки:

{% include "startform.html with some_action="post" %}
    {{ field.errors }}
    {{ field.label_tag }}: {{ field }}
    {{ field.field2_tag }}: {{ field2 }}
{% include "endform.html %}

Существует также наследование шаблонов , где вы можете определить базовый шаблон и наследовать от него все остальные шаблоны.Наследование основано на блоках, вы можете переопределить блоки в родительском шаблоне новым кодом в дочернем шаблоне.Это работает очень хорошо.

0 голосов
/ 29 июня 2011

Посмотрите на вспомогательное приложение ModelForm . Он создаст форму из любой модели, которая затем может быть использована в простом шаблоне формы.

0 голосов
/ 28 июня 2011

В django шаблоны могут быть общими для себя !!

Вы можете использовать разные формы для каждой модели внутри одного и того же шаблона, используя {{form.attribute}}

Здесь - официальный документ django

...