Todo приложение для отображения списка задач


Основной вид мой (игрушка!) Todo приложение, безусловно, для отображения списка задач. Они сгруппированы по какому-либо признаку, и задачи, структура ниже на самом деле является списком пар (заголовок, список задач).

{% for tasks in tasks %}
    <p class="list-header">{{ tasks.0 }}:</p>
    <ul>
    {% for t in tasks.1 %}
        <li>
            <span class="
                {% if t.priority >= 1 %}prio-medium{% endif %}
                {% if t.priority >= 2 %}prio-high{% endif %}
                ">
                {{ t.description }}
            </span>
            {% if t.due_date %}
                due, 
                <span class="
                    {% if t.days_to_due_date < 15 %}date-soon{% endif %}
                    {% if t.days_to_due_date < 3 %}date-very-soon{% endif %}
                    {% if t.days_to_due_date < 0 %}date-overdue{% endif %}
                    ">
                    {{ t.relative_due_date }}
                </span>
            {% endif %}
            - 
            {% if not t.done %}
                <a href="/yata/{{ t.id }}/mark_done/">Done!</a>
            {% else %}
                <a href="/yata/{{ t.id }}/mark_not_done/">Not done!</a>
            {% endif %}
            - 
            <a href="/yata/{{ t.id }}/edit/">Edit</a>
        </li>
    {% endfor %}
    </ul>
{% empty %}
    <p class="list-header">Cool! Nothing to do...</p>
{% endfor %}

В частности, мне интересно, если решая, какой класс CSS, чтобы назначить считается роль функции просмотра, или если это правильно, чтобы поместить его в шаблон.

Аналогично, я также задаюсь вопросом о наличие нескольких адресов в шаблоне. Они бы лучше в задачи структура себя? Или они должны быть обеспечены с помощью некоторых методов в задаче класса? Ведь relative_due_date уже есть функция, которая используется только для отображения (она возвращает строку как 'вчера', 'завтра' или 'в 3 дня). И не использовать обратный()?



Комментарии
3 ответа


  1. Я бы предложил двигать в CSS логику выбора в пользовательский шаблон тег, или даже фильтр, например, {{ Т.relative_due_date }}. После этого ваш шаблон будет выглядеть гораздо чище, и эта логика будет по-прежнему принадлежать к презентации часть МДС (модель, вид, шаблон).

  2. Вы можете разделить ваш кортеж в определении цикла, так что вы не пересмотрите задачи переменной. {% для заголовка, task_list в задачи %} ....

  3. Использование обратного адреса, нет никаких сомнений. Вы бы ненавижу тот день, когда вы должны изменить их иначе :) пойти еще дальше, использовать пространства имен URL-адрес.

5
ответ дан 12 февраля 2011 в 12:02 Источник Поделиться

Я бы только добавить одну вещь, чтобы rassie здорово списка: при выборе, какие CSS-класс, чтобы назначить задачи, которые должны "скоро", конечно, относится к презентации слоя (вид или шаблон), тот факт, что задачи связи между 4 и 14 дней из-за "скоро" относится к модели. Если каждая задача здесь-это объект, вы можете добавить isDueSoon(), isDueVerySoon(), и isOverdue() , чтобы инкапсулировать эту логику в одном логическом месте.

Вы будете счастливы вы сделали это когда вы пишете модульные тесты для класса Task и снова, когда ваш босс просит вас построить API-интерфейс REST для работы с задачами из родного приложения для iPhone.

3
ответ дан 12 февраля 2011 в 02:02 Источник Поделиться

Я бы двигаться, что условной логики в теги span с видом. Имеете свое представление передать шаблон доработанный вариант задачи.1, где каждая задача вместо исходной системы сейчас модифицированный вариант, шаблон можно использовать сырыми. Например, вместо передачи шаблон Т.приоритет - это целое число, передайте его в качестве фактического класса CSS, который вы будете использовать. Же, как и Т.days_to_due_date.

Лично я ненавижу шаблоны редактирования, потому что я не настроен мой текстовый редактор, чтобы играть с ними :-). Как следствие, я обычно двигаются все из шаблона и посмотреть, что я могу. Та же ситуация и с вашего url. Я не уверен, если это лучшая практика, но я хотел бы оставить мой шаблон как можно более чистым.

Что касается вашего вопроса об обратной(), мне нужно больше контекста, чтобы ответить.

1
ответ дан 12 февраля 2011 в 12:02 Источник Поделиться