Skip to main content
 首页 » 编程设计

python-3.x之为什么我提交表单的尝试返回“无效的日期时间值”

2025年05月04日79zhoujg

我创建了一个允许用户选择所需日期和时间的表单,但是在提交表单时却收到此错误消息

Not a valid datetime value 


我尝试包括所需的格式或标准的日期时间格式,但是得到了相同的结果

#Form.py 
class AddPostForm(FlaskForm): 
    post_title = StringField('Share Title', validators=[DataRequired()]) 
    description = StringField('Description', validators=[DataRequired()]) 
    share_date = DateTimeField('Share Date', validators=[DataRequired()]) 
 
 
#views.py 
 
@posts_blueprint.route('/add', methods=['GET', 'POST']) 
@login_required 
def add_post(): 
    form = AddPostForm() 
    if request.method == 'POST': 
        if form.validate_on_submit(): 
            new_post = Post(form.post_title.data, form.description.data,  
                            current_user.id, form.share_date) 
 
 
            db.session.add(new_post) 
            db.session.commit() 
            flash('New shared Item, {}added!'.format(new_post.post_title),  
                  'success') 
            return redirect(url_for('posts.user_posts')) 
       else: 
           flash_errors(form) 
           flash('ERROR! Recipe was not added.', 'error') 
 
   return render_template('add_post.html', title='Add Item', form=form) 
 
 
#add_post.html 
{% from "_form_macros.html" import render_errors %} 
{% import "bootstrap/utils.html" as utils %} 
{% import "bootstrap/wtf.html" as wtf %} 
{% extends "layout.html" %} 
{% block body %} 
 
<div class="content-section"> 
  <div class="page-header"> 
    <h2>Add a New Post</h2> 
</div> 
 
<div class="container"> 
  <form action="{{ url_for('posts.add_post') }}" method="post"  
                  enctype="multipart/form-data"> 
      {{ form.csrf_token }} 
<div class="form-group row"> 
  <legend for="post_title" class="col-form-legend col-sm-3">Title</legend> 
  <div class="col-sm-6"> 
    <input type="text" class="form-control" id="post_title"  
    name="post_title" placeholder="Enter Post title..."> 
    {{ render_errors(form.post_title) }} 
  </div> 
</div> 
 
<div class="form-group row"> 
  <legend for="description" class="col-form-legend col-sm-  
  3">Description</legend> 
  <div class="col-sm-6"> 
    <input type="text" class="form-control" id="description"  
    name="description" placeholder="Enter post description..."> 
    {{ render_errors(form.description) }} 
  </div> 
</div> 
 
<div class="form-group row"> 
<legend for="share_date" class="col-form-legend col-sm-3">Sharing  
Date</legend> 
<div class="col-sm-6"> 
  <input type="datetime-local" class="form-control" id="share_date"  
  name="share_date" placeholder="Sharing Date..."> 
  {{ render_errors(form.share_date) }} 
 </div> 
 </div> 
 
<div class="center"> 
  <div class="offset-sm-2 col-sm-10"> 
    <button type="submit" class="btn btn-success">Add post</button> 
  </div> 
</div> 
</form> 
</div> 
</div> 
{% endblock %} 


用户应该能够输入所需的日期和时间并成功提交表格

请您参考如下方法:

您的数据库期望与表单发送的似乎之间存在冲突。
尝试查看模型中使用的日期格式,并尝试将表单数据打印到控制台以查看其提供的功能。
也可以尝试查看wtforms的文档,以查看它使用的日期类型,并将其与数据库模型中的date字段匹配。