python-flask表单-

本文仍以银行付款为例进行实践flask表单的实现
一、骨干的实现与验证
(1)定义表单模型

from flask import Flask,render_template,request
#类型
from wtforms import StringField,SelectField,SubmitField
from flask_wtf import FlaskForm
#参数的校验
from wtforms.validators import DataRequired

app = Flask(__name__)

app.config["SECRET_KEY"] = "good"

#定义表单模型类
class Paystate(FlaskForm):
    payment_no = StringField(label="订单号",validators=[DataRequired("不能为空")])
    bank_flow_no = StringField(label="流水号", validators=[DataRequired("不能为空")])
    receipt_code = StringField(label="回单号", validators=[DataRequired("不能为空")])
    amt_debit = StringField(label="金额", validators=[DataRequired("不能为空")])
    failure_reason = StringField(label="失败/退票原因")
    tag = SelectField(label= "动作",validators=[DataRequired("请选择要做的操作")],render_kw={"class":"form-control"},choices=[(1,"付款成功"),(2,"付款退票")],default= 1,coerce = int)
    submit =SubmitField(label="提交")

@app.route(rule= "/",methods= ["GET","POST"])
def paystate():
    #创建表单对象
    form = Paystate()
    if request.method == "GET":
        return render_template("index2.html",form=form)
    if request.method == "POST":
        if  request.form.get("tag") == "1":
            print("调用成功的场景")
            return render_template("index2.html", form=form)
        if  request.form.get("tag") == "2":
            print("调用退票的场景")
            return render_template("index2.html", form=form)
if __name__ =="__main__":
    app.run()

(2)编写html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>进行付款</title>
</head>
<body>
<form action = "" method="post">
    {{ form.payment_no.label }}
    {{ form.payment_no }}
    <br>
    {{ form.bank_flow_no.label }}
    {{ form.bank_flow_no }}
    <br>
    {{ form.receipt_code.label }}
    {{ form.receipt_code }}
    <br>
    {{ form.amt_debit.label }}
    {{ form.amt_debit }}
    <br>
    {{ form.tag.label }}
    {{ form.tag }}
    <br>
    {{ form.failure_reason.label }}
    <br>
    {{ form.failure_reason }}
    <br>
    {{ form.submit }}
    <br>
    此处写一些备注

</form>
</body>
</html>

(3)运行查看,查看效果
启动服务后,访问链接:
在这里插入图片描述
运行一个付款成功:
在这里插入图片描述
在这里插入图片描述
运行一个付款退票:
在这里插入图片描述
在这里插入图片描述
二、实现中遇到的问题
(1)表单设计,查找相应的方法,及校验有效性
在这里插入图片描述
(2)tag的判断逻辑类型,开始用数字1报错,后改为“1”通过
在这里插入图片描述
(3)jinja2中{{}}的使用
jinja2的基本语法:
{{}}:用来装载表达式,比如变量、运算表达式、比较表达式
在这里插入图片描述

{{% %}}:用来装载控制语句。比如:if控制语句、for循环控制语句
{{##}}:用来装载注释,模版文件被渲染后,注释不会包含在最终生成的文件中

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值