Handcoding формы против форм Джанго - PullRequest
0 голосов
/ 06 мая 2011

Существуют ли различия в производительности между формами ручного кодирования в django (а также всеми валидациями в views.py) и использованием библиотеки форм django?Если они примерно одинаковы, в каких сценариях можно вручную закодировать форму, используя встроенные?

Кроме того, как насчет ручного кодирования шаблонов HTML, использования блочных тегов django и т. Д. Для повторного использования?определенные районы?

1 Ответ

3 голосов
/ 06 мая 2011

Есть ли у вас безумные требования к нулевым допускам? Как в случае: люди будут на самом деле умирать или причинять вред, или вы будете уволены, если визуализация страницы занимает дополнительные несколько миллисекунд?

Я сомневаюсь в этом, поэтому просто дайте фреймворку подняться до точки, где вам нужно больше контроля над выводом HTML - это на самом деле гораздо более вероятный сценарий, чем вам нужно избегать выполнения какого-либо Python для сохранения (при полное предположение) 15 мс.

Когда вам нужен больший контроль, тогда лучше всего склеить некоторый HTML-код ручной работы, или, что еще лучше, создать поле включения / частичное для полей формы, которые вы можете использовать везде, чтобы сэкономить время на ручную запись более вам нужно, но все же дает вам гораздо больше гибкости, чем myform.as_p и т. д.

Вот грубый фрагмент, который я часто использую и адаптирую, чтобы дать мне большой контроль над полями форм, а также позвольте мне использовать шаблонную среду Django, чтобы сэкономить мое время:

В моем шаблоне:

{% for form_field in myform %}
   {% include "path/to/partials/form_field_as_p.html" %}
{% endfor %}

И в этом form_field_as_p.html что-то вроде:

{% if not form_field.is_hidden %}
    <p>

    {% if form_field.errors %}
      {% for error in form_field.errors %}
      <span class="errorlist">{{error}}</span>
      {% endfor %}
    {% endif %}         

    {{ form_field.label_tag }}

    {% if form_field.field.required %}
        <span class="required">*</span>
    {% endif %}

    {{ form_field }}

    {% if form_field.help_text %}
        <span class="form-help-text">{{ form_field.help_text }}</span>
    {% endif %}

    </p>    
{% else %}
    <div>{{ form_field }}</div> {# hidden field #}
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...