추가 제안.
당신이 활용할 수 nosetests 및 PDB를 오히려 주입 함께 pdb.set_trace()
수동으로보기에. 장점은 오류가 처음 시작될 때 잠재적으로 타사 코드에서 오류 조건을 관찰 할 수 있다는 것입니다.
오늘 나에게 오류가 있습니다.
TypeError at /db/hcm91dmo/catalog/records/
render_option() argument after * must be a sequence, not int
....
Error during template rendering
In template /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/crispy_forms/templates/bootstrap3/field.html, error at line 28
render_option() argument after * must be a sequence, not int
18
19 {% if field|is_checkboxselectmultiple %}
20 {% include 'bootstrap3/layout/checkboxselectmultiple.html' %}
21 {% endif %}
22
23 {% if field|is_radioselect %}
24 {% include 'bootstrap3/layout/radioselect.html' %}
25 {% endif %}
26
27 {% if not field|is_checkboxselectmultiple and not field|is_radioselect %}
28
{% if field|is_checkbox and form_show_labels %}
이제 이것이 폼의 생성자를 훼손했으며 어떤 필드가 문제인지 잘 알고 있습니다. 그러나 pdb를 사용 하여 템플릿 내에서 싱싱한 양식에 대해 불만을 제기 할 수 있습니까?
예, 저는 할수 있습니다. nosetests 에서 --pdb 옵션 사용 :
tests$ nosetests test_urls_catalog.py --pdb
예외를 정상적으로 처리하자마자 pdb는 예외가 발생하는 곳을 멈추고 둘러 볼 수 있습니다.
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/forms.py", line 537, in __str__
return self.as_widget()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/forms.py", line 593, in as_widget
return force_text(widget.render(name, self.value(), attrs=attrs))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/widgets.py", line 513, in render
options = self.render_options(choices, [value])
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/widgets.py", line 543, in render_options
output.append(self.render_option(selected_choices, *option))
TypeError: render_option() argument after * must be a sequence, not int
INFO lib.capture_middleware log write_to_index(http://localhost:8082/db/hcm91dmo/catalog/records.html)
INFO lib.capture_middleware log write_to_index:end
> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/forms/widgets.py(543)render_options()
-> output.append(self.render_option(selected_choices, *option))
(Pdb) import pprint
(Pdb) pprint.PrettyPrinter(indent=4).pprint(self)
<django.forms.widgets.Select object at 0x115fe7d10>
(Pdb) pprint.PrettyPrinter(indent=4).pprint(vars(self))
{ 'attrs': { 'class': 'select form-control'},
'choices': [[('_', 'any type'), (7, (7, 'type 7', 'RECTYPE_TABLE'))]],
'is_required': False}
(Pdb)
파삭 파삭 한 필드 생성자에 대한 나의 선택 논증은 목록 / 튜플의 목록이 아니라 목록 내의 목록 이었음이 분명합니다.
'choices': [[('_', 'any type'), (7, (7, 'type 7', 'RECTYPE_TABLE'))]]
깔끔한 것은이 pdb가 내 코드가 아닌 크리스피 코드 내에서 발생하고 수동으로 삽입 할 필요가 없다는 것입니다.