Как вы справляетесь с содержимым шаблона, который должен быть переведен в Django? - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь сделать следующую таблицу (см. Скриншот):

enter image description here

У меня есть следующий код шаблона:

       <table class='table'>
            {% for row in task_dashboard_rows %}
            <tr>
                <td>{{ forloop.counter }}</td>
                <td>{{ row.where_html }}</td>
                <td>{{ row.key_html }}</td>
                <td>{{ row.value_html }}</td>
            </tr>
            {% endfor %}
        </table>

Я создал абстракционный класс, который будет содержать логику в моем коде представления:

class TaskDashboardRow(object):
    def __init__(self, where_html=None, key_html=None, value_html=None):
        self.where_html = where_html
        self.key_html = key_html
        self.value_html = value_html

И где-то в моей функции просмотра у меня есть следующее:

    dr = TaskDashboardRow()
    dr.where_html = _('Voluum')
    dr.set_key_html(is_linking=False, label=_('Create New Lander'))
    if self.object.vm_campaign_id:
        dr.value_html = format_html(_('<span class="text-success">Not Needed</span>'))
    else:
        dr.value_html = format_html(
            _(
                '<ul class="nolist">'
                '<li>Name: <b>Campaign:{name}</b></li>'
                '<li>URL: <a href="#">{url}</a></li>'
                '</ul>'
            ),
            url=absolute(reverse('mediabuying:campaign:money', args=(self.object.pk,))),
            name=self.object
        )
    ret.append(dr)

    dr = TaskDashboardRow()
    dr.where_html = _('Pangu')
    dr.set_key_html(is_linking=False, label=_('Update TA Campaign ID'))
    if self.object.ta_campaign_id:
        dr.value_html = format_html(_('<span class="text-success">No Need To Update</span>'))
    else:
        dr.value_html = format_html(
            _('<a href="{}">Click here</a> to update ta_campaign_id'),
            reverse('mediabuying:campaign:update', args=(self.object.pk,))
        )
    ret.append(dr)

Как вы можетевидите, это очень запутанно из-за следующих причин:

  1. У меня есть _ (от ugettext_lazy) в моем коде представления.
  2. Я должен обернуть мои строки в format_html.
  3. У меня view code в моем controller code (плохо для разделения MVC?)

Как можно лучше разделить мой взгляд и контроллер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...