【问题标题】:DateField is not rendered as type="date"DateField 未呈现为 type="date"
【发布时间】:2013-10-25 11:19:52
【问题描述】:
class Form(Form):
      plan_start = DateField('Plan Start', validators=[Required()]) 

此代码将呈现此 html。

<input id="plan_start" name="plan_start" type="text" value="">

我的问题是:为什么类型是text 而不是date

我只能通过在模板中明确传递type='date' 来解决这个问题。

 {% raw form.plan_start.label %}{% raw form.plan_start(type='date') %}

【问题讨论】:

    标签: python tornado wtforms


    【解决方案1】:

    您可以使用 html5 中的 DateField。

    from wtforms.fields.html5 import DateField
    
    
    class Form(Form):
        plan_start = DateField('Plan Start', validators=[Required()])
    

    【讨论】:

    • 这并不能解决问题。
    • 遇到了这个错误,这为我解决了这个问题。谢谢!
    • @SeanPianka 这是documented 和正确的做法。问题中使用的fields.DateField 仅呈现文本输入(请参阅source code)。要呈现date 输入,您需要使用fields.html5.DateField,如答案所示。这将在版本 3(尚未发布)中发生变化:DateField 将默认呈现日期输入。
    【解决方案2】:

    尝试创建自定义小部件:

    from django.forms import widgets
    
    class CustomDateInput(widgets.TextInput):
        input_type = 'date'
    
    class Form(Form):
        plan_start = DateField('Plan Start', validators=[Required()], widget=CustomDateInput) 
    

    【讨论】:

    • 姜戈?我没有使用 django。
    【解决方案3】:

    要获取类型为日期而不是文本,您还需要传递格式选项,如下所示

    password = DateField('Your Date of Birth', validators=[DataRequired()], format='%Y-%m-%d')
    

    【讨论】:

    • 这不仅不起作用,HTML5 &lt;input type='date' /&gt; 元素也无法为其设置格式。这取决于浏览器或操作系统。
    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多