【发布时间】:2019-01-17 14:52:52
【问题描述】:
我想用 Django 渲染两个选择(一个是多选,另一个是简单的)并使用 Materialize 对其进行自定义。我设法编写了以下代码:
在我的 forms.py 中
class ZonesForm(forms.Form):
zones_options = (
(1, 'Zone 1'),
(2, 'Zone 2'),
(3, 'Zone 3'),
(4, 'Zone 4')
)
zones = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=zones_options)
conn_options = (
(1, 'ABCDE'),
(2, 'FGHIJ'),
)
connections = forms.ChoiceField(choices=conn_options)
在我的 zone.html 中
{% block content %}
<div class="container">
<div class="row">
<form method="post">
<div class="input-field col s6">
<select multiple name="{{ form.zones.name }}">
{% for opt in form.zones %}
<option value="{{ opt.id }}">{{ opt.label }}</option>
{% endfor %}
</select>
<label>Zones</label>
</div>
<div class="input-field col s6">
<select name="form.connections.name">
{% for opt in form.connections %}
<option value="{{ opt.id }}">{{ opt }}</option>
{% endfor %}
</select>
<label>Connection</label>
</div>
</form>
</div>
</div>
{% endblock %}
我的问题是:当页面被渲染时,我得到了第一个选择的 4 个复选框(如预期的那样),并且没有名称(所有选项都是空白的)。对于第二个选择,我有 4 个选项(一个空白,一个带有“ABCDE”,一个空白,一个带有“FGHIJ”)。
我怀疑问题出在属性上。我没有得到正确的值(我尝试过 opt.label、opt.text、opt.choices、opt.value、opt...)。如何正确访问它们?
另一个问题:有没有很好的调试方法?我是 Django 和一般网络开发的新手。我试过 import pdb; pdb.set_trace() 进行调试,但我无法通过断点来浏览其他方法(我正在使用 PyCharm)。
【问题讨论】:
标签: django python-3.x django-forms materialize