Я создал свой собственный виджет, унаследованный от класса Widget, который работает так же, как виджет Select. Только из-за этого страница загружалась долго. Таким образом начался сеанс отладки, результатом которого стало следующее открытие. Когда моя форма использует собственный виджет Select, который я скопировал в один из моих собственных модулей python, чтобы я мог его изменить, он загружается быстро. Согласно панели инструментов отладки django загрузка страницы составляет около 500 мс. Но когда я меняю template_name и option_template_name на свои собственные шаблоны, которые были изменены, чтобы включать в себя точно такой же код, он снова занимает много времени, как мой оригинальный пользовательский виджет, около 5500 мс.
# Here is the beginning of the Select Widget class which i've copeied into my own widgets.py module.
class Select(ChoiceWidget):
input_type = 'select'
template_name = 'django/forms/widgets/select.html'
option_template_name = 'django/forms/widgets/select_option.html'
add_id_index = False
checked_attribute = {'selected': True}
option_inherits_attrs = False
Затем я вношу только два изменения - как указано выше.
class Select(ChoiceWidget):
input_type = 'select'
#template_name = 'django/forms/widgets/select.html'
#option_template_name = 'django/forms/widgets/select_option.html'
add_id_index = False
checked_attribute = {'selected': True}
option_inherits_attrs = False
# input_type = 'select'
template_name = "purchases/input_with_dropdown.html"
option_template_name = "purchases/dropdown_options.html"
# option_inherits_attrs = False
# checked_attribute = {'data-selected': True}
# add_id_index = False
Теперь для загрузки требуется время.
А вот html для input_with_dropdown. html. Это точно так же, как и select. html from django.
<select name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>{% for group_name, group_choices, group_index in widget.optgroups %}{% if group_name %}
<optgroup label="{{ group_name }}">{% endif %}{% for option in group_choices %}
{% include option.template_name with widget=option %}{% endfor %}{% if group_name %}
</optgroup>{% endif %}{% endfor %}
</select>
А вот dropdown_options. html. Снова то же, что и select_options. html from django.
<option value="{{ widget.value|stringformat:'s' }}"{% include "django/forms/widgets/attrs.html" %}>{{ widget.label }}</option>
Я не могу понять, как даже отлаживать это дальше.
Мой единственный вывод, поэтому я ссылаюсь на неправильные шаблоны, поэтому на их поиск уходит много времени? Хотя это неправда.
РЕШЕНО -
Проблема связана с панелью инструментов django -debug-toolbar. Благодаря этому приложению весь вечер потрачен впустую.
Подобная проблема описана здесь - https://github.com/jazzband/django-debug-toolbar/issues/910