提交后如何保留表单中的字段值?

2023-12-21

提交表单后,字段值似乎被设置回空。我正在做一些表单验证;如果表单无效,我将让它显示错误列表中的错误消息,但我希望保留字段值。有没有办法做到这一点?

这是我验证表单的观点:

@app.route('/booking', methods=['GET', 'POST'])
def booking():
    errors = [] 
    if request.method == 'GET':     
        return render_template('booking.html', errors=errors)
    else:
        # grab values from form fields and store them in objects
        start_date = request.form['start_date']
        end_date = request.form['end_date']
        name = request.form['name'].strip()
        email = request.form['email'].strip()       

        # check if all fields are non-empty and raise an error if not
        if not start_date or not end_date or not name or not email:
            errors.append('Please enter all the fields.')
        else:
            # converts dates to Unix time-stamp for easier validation/calculations
            start_timestamp = dt.strptime(start_date, "%d/%m/%Y")
            end_timestamp = dt.strptime(end_date, "%d/%m/%Y")

            # checks to see if dates are valid          
            if start_timestamp > end_timestamp or end_timestamp < start_timestamp:              
                errors.append('Please enter a valid date range')
            else:
                #checks to see if booking has already been taken
                bookings = read_file('app/static/bookings.csv')     
                for i in bookings:
                    s_date = dt.strptime(i[0], "%d/%m/%Y")
                    e_date = dt.strptime(i[1], "%d/%m/%Y")
                    if s_date <= start_timestamp <= e_date:
                        errors.append('Booking has already been taken, please select another date')
                        break

            # checks to see if email address is valid using regex
            if not valid_email_address(email):
                errors.append('Please enter a valid email address')         

            #if no errors have occured then write booking to file
            if not errors:
                new_booking = [start_date, end_date, name, email]
                bookings.append(new_booking)
                write_file(bookings, 'app/static/bookings.csv')
                return render_template('booking.html')
    return render_template('booking.html', errors=errors)

这是表单的模板:

<div id="main-wrapper">
    <div id="main">     
        <div id="info">
            {% if errors %}
            {% for error in errors %}
            <div><p>{{ error }}</p></div>
            {% endfor %}
            {% endif %}
            <form action = "booking" method="post">
            <input id="start_date" type="text" name="start_date">
            <input id="end_date" type="text" name="end_date">
            <input type="text" name="name" />
            <input type="text" name="email" />

            <input type="submit" value="Submit">
        </div>
    </div>
</div>

您最好使用表单库,例如WTForms http://wtforms.readthedocs.org/en/latest/(以及相关的扩展Flask-WTF https://flask-wtf.readthedocs.org/en/latest/)而不是手动完成这一切。

但如果您选择了这种方法,那么它就非常简单了。您需要将 request.form 中的值提供给 HTML 输入。

<input id="start_data" type="text" name="start_date" value="{{ request.form['start_date'] }}"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提交后如何保留表单中的字段值? 的相关文章

  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 创建一个行为类似于任何变量但具有更改/读取回调的类

    我想创建一个类 其行为类似于 python 变量 但在更改 读取 变量 时调用一些回调函数 换句话说 我希望能够按如下方式使用该类 x myClass change callback read callback 将 x 定义为 myclas
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 应用程序移至 Docker 生产环境时 Flask-WTF CSRF 验证失败

    我刚刚为我一直在开发的 Flask 应用程序设置了生产环境 这个堆栈是 Windows Server 2012 R2 Hyper V VM Running Ubuntu 14 04 Docker 1 5 Running Containers
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • Tensorflow 到 ONNX 的转换

    我目前正在尝试转换我使用本教程创建的已保存 且正在工作 的 pb 文件 https github com thtrieu darkflow https github com thtrieu darkflow 到 onnx 文件中 我目前正在
  • 使用主宰器将实时数据发送给客户端

    我尝试使用 Flask 的主宰框架 以便按照 Flask 代码片段将实时信息发送到客户端浏览器http flask pocoo org snippets 80 http flask pocoo org snippets 80 当我尝试为我的
  • 如何使用子进程打开新的浏览器选项卡?

    我正在打开一个新的 IE 窗口 subprocess Popen r os environ PROGRAMFILES Internet Explorer IEXPLORE EXE Call URL 当 IE 关闭时这很好 但即使打开它也会生
  • Celery 设计帮助:如何防止并发执行任务

    我对 Celery AMQP 相当陌生 正在尝试提出一个任务 队列 工作人员设计来满足以下要求 我有多种类型的 每用户 任务 例如 TaskA TaskB TaskC 这些 每用户 任务中的每一个都为系统中的一个特定用户读取 写入数据 因此
  • 如何使用 Python Pandas 制作 DataFrame 切片并在特定切片中“fillna”?

    问题 让我们从 Kaggle 获取泰坦尼克号数据集 我有包含 Pclass 性别 和 年龄 列的数据框 我需要用特定组的中位数填充 年龄 列中的 NaN 如果是来自一等的女性 我想用一等女性的中位数填写她的年龄 而不是整个年龄列的中位数 问
  • python 中的异步编程

    python 中有异步编程的通用概念吗 我可以为一个函数分配一个回调 执行它并立即返回主程序流 无论该函数的执行需要多长时间吗 您所描述的 主程序流程在另一个函数执行时立即恢复 不是通常所说的 异步 又名 事件驱动 编程 而是 多任务 又名
  • 在 Django 中翻译文件时的 Git 命令

    我在 Django 中有一个现有的应用程序 我想在页面上添加翻译 在页面上我有 trans Projects 在 po 文件中我添加了 templates staff site html 200 msgid Projects msgid P
  • 找到图像特征宽度的正确方法和Python包

    输入是一个在黑色背景上带有彩色 抱歉 垂直线的光谱 给定该带的近似 x 坐标 用 X 标记 我想找到该带的宽度 我对图像处理不熟悉 请引导我前往正确的方法图像处理和Python图像处理package也能起到同样的作用 我认为 PIL Ope
  • Flask APScheduler + Gunicorn 工作人员 - 在套接字修复后仍在运行任务两次

    我有一个 Flask 应用程序 我使用 Flask APScheduler 在我的数据库上运行计划查询并通过 cron 作业发送电子邮件 我通过 Gunicorn 使用以下配置运行我的应用程序并通过主管进行控制 program myapp
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • Django:在单独的线程中使用相同的测试数据库

    我正在使用具有以下数据库设置的测试数据库运行 pytests DATABASES default ENGINE django db backends postgresql psycopg2 NAME postgres USER someth
  • 在 Mac (Catalina) 上安装 PyGame 时出错 [重复]

    这个问题在这里已经有答案了 我一直在尝试将 PyGame 安装到 Catalina 上的 Mac 上 但不知道如何安装 我收到的错误消息是 SystemExit error command gcc failed with exit stat
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐