django表单下拉列表中的数字

时间:2012-01-14 01:51:43

标签: python django linux

我是django的新手,我想制作一个简单的表格,根据我可以使用django的表格模块制作表格的文件

from django import forms

class CronForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField(required=False, label='Your e-mail address')
    message = forms.CharField(widget=forms.Textarea)

    def clean_message(self):
        message = self.cleaned_data['message']
        num_words = len(message.split())
        if num_words < 4:
            raise forms.ValidationError("Not enough words!")
        return message

我想知道的是如何创建一个月中的下拉列表,即从1到31?

有些人在他们的表单模板中使用javascript完成了它,可以在django中完成吗?

2 个答案:

答案 0 :(得分:52)

您正在寻找默认情况下呈现为ChoiceField html元素的selecthttps://docs.djangoproject.com/en/dev/ref/forms/fields/#choicefield

class CronForm(forms.Form):
    days = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)])

答案 1 :(得分:0)

您可以从选择手动渲染字段开始。 一个简单的例子: -

capacity

这将呈现没有任何样式的表单,然后您必须应用相关类来创建下拉列表(从w3c下拉列表css复制): -

{% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }} {{ field }}
            {% if field.help_text %}
                <p class="help">{{ field.help_text|safe }}</p>
            {% endif %}
        </div>
    {% endfor %}

将两者结合起来: -

 <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">Tutorials
    <span class="caret"></span></button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li role="presentation"><a role="menuitem" tabindex="-1" href="#">HTML</a></li>
      <li role="presentation"><a role="menuitem" tabindex="-1" href="#">CSS</a></li>
      <li role="presentation"><a role="menuitem" tabindex="-1" href="#">JavaScript</a></li>
      <li role="presentation" class="divider"></li>
      <li role="presentation"><a role="menuitem" tabindex="-1" href="#">About Us</a></li>
    </ul>
  </div>
</div>