代码之家  ›  专栏  ›  技术社区  ›  Dinko Pehar

WTForms-DateTimeLocalField数据在提交后为None

  •  1
  • Dinko Pehar  · 技术社区  · 7 年前

    表格提交后 POST 请求,每 Field 数据有它的价值,除了 DateTimeLocalField . 访问DateTimeLocalField的数据值是一种 None

    形式

    class ArticleForm(FlaskForm):
        name = StringField('Name', validators=[DataRequired()])
        category = SelectField(u'Category', choices=categories.choices)
        town = StringField('Town', validators=[DataRequired()])
        minimal_price = IntegerField('Minimal price')
        article_image = FileField('Article_image', validators=[FileRequired()])
        time_left = DateTimeLocalField('Time to end', validators=[InputRequired()],
                                  format='%Y-%m-%d %H:%M:%S')
        description = TextAreaField('Description', validators=[DataRequired()])
    

    验证: ( 测试 is_submitted ,除 article_form.time_left.data 没有 )

    if article_form.validate_on_submit():
    
        new_article = Article(name=article_form.name.data,
                              category=article_form.category.data,
                              town=article_form.town.data,
                              minimal_price=article_form.minimal_price.data,
                              article_image=name,
                              time_left=article_form.time_left.data, # <-- None
                              description=article_form.description.data,
                              user_id=current_user.id)
    

    有什么帮助吗 ?

    3 回复  |  直到 6 年前
        1
  •  6
  •   Nikolay Petrov    7 年前

    尝试更改文件的格式 DateTimeLocalField

    format='%Y-%m-%d %H:%M:%S' 
    

    收件人:

    format='%Y-%m-%dT%H:%M'
    

    提示:您可以在验证之前打印输入字段的实际内容,以确认输入字段的格式是否正确 DateTimeLocalField公司 现场。

        2
  •  2
  •   trincot    7 年前

    使用 wtforms.fields.html5.DateTimeLocalField wtforms.DateTimeLocalField . 设置格式,日期和时间用“T”分隔。如果要将当前时间作为默认值,请设置默认参数。

    from wtforms.fields.html5 import DateTimeLocalField
    
    class InterviewForm(Form):
        posted = DateTimeLocalField('Posted:', default=datetime.today, format='%Y-%m-%dT%H:%M')
    
        3
  •  1
  •   Manan Buddhadev    7 年前

    我对同一个问题做了广泛的研究,这是一个黑客攻击,但我仍然从标签上得到了时间戳,看起来像:

    <input id="time_left" name="time_left" required type="datetime-local" value="2018-11-15T04:44">
    

    基本上是从标记返回的标记中搜索时间戳

    date = re.search('(\d{4})[/.-](\d{2})[/.-](\d{2})[T](\d{2})[:](\d{2})',
              str(form.time_left)).group())
    

    推荐文章