微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Flask 从一个引导模式导航到同一页面内的另一个

如何解决使用 Flask 从一个引导模式导航到同一页面内的另一个

我创建了一个 Home.html,其中有两个名为 Login 和 Register 的引导模式,我有两个问题。

A) 如果用户填写的所有详细信息都正确,我如何通过单击“注册”按钮从注册模式转到登录模式。

B) 如果详细信息不正确,如何通过给出错误消息再次显示登录模式,如果详细信息正确,则单击“登录”按钮转到主页。

主页.html

<button class="nav-link btn btn-dark lnkhov" data-toggle="modal" data-target="#LoginstaticBackdrop">Sign In</button>
<button class="nav-link btn btn-dark lnkhov" data-toggle="modal" data-target="#RegisterstaticBackdrop">Sign Up</button>

<!--            Login HTML Modal-->
        <div class="modal fade" id="LoginstaticBackdrop" data-keyboard="false"
             tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
            <div class="modal-dialog modal-dialog-centered">
                <div class="modal-content bg-dark">
                    <div class="modal-header">
                        <h5 class="modal-title font-weight-bold" id="LoginModalLabel">Login</h5>
                        <button class="close text-white" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body text-left">

                        <div class="alert alert-danger" style="display: none" id="ErrorAler" role="alert"> "Error Message Here" </div>

                        <form action="/Login" method="post">
                            <div class="form-group">
                                <label for="loginInputEmail">Email Address</label>
                                <input type="email" class="form-control" name="loginInputEmail" id="loginInputEmail" aria-describedby="emailHelp" placeholder="Email Address" required>
                                <small id="loginemailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                            </div>
                            <div class="form-group">
                                <label for="loginInputPassword">Password</label>
                                <input type="password" class="form-control" name="loginInputPassword" id="loginInputPassword" placeholder="Password" required>
                                <small id="loginpasswordHelpInline" class="text-muted">Must be 8-20 characters long.</small>
                            </div>
                            <div class="form-group form-check">
                                <input type="checkBox" class="form-check-input" id="loginCheck1">
                                <label class="form-check-label" value="remember-me" for="loginCheck1">Remember me</label>
                            </div>
                            <button type="submit" class="btn btn-primary">Login</button>
                        </form>
                    </div>
                    <div class="modal-footer d-flex justify-content-center">
                        <small class="text-muted">Forgot Password?</small>
                        <small><a class="lnkhov" href="">Click Here</a>,</small>&ensp;&ensp;
                        <small class="text-muted">New User!!</small>
                        <button class="btn btn-danger" data-target="#RegisterstaticBackdrop" data-toggle="modal" data-dismiss="modal">Register</button>
                    </div>
                </div>
            </div>
        </div>

<!--            Register HTML Modal-->
        <div class="modal fade" id="RegisterstaticBackdrop" data-backdrop="static" data-keyboard="false"
             tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
            <div class="modal-dialog modal-dialog-centered">
                <div class="modal-content bg-dark">
                    <div class="modal-header">
                        <h5 class="modal-title font-weight-bold" id="RegisterModalLabel">Register</h5>
                        <button class="close text-white" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body text-left">
                        <form action="/Register" method="post" oninput='RegisterInputConPassword.setCustomValidity(RegisterInputConPassword.value != RegisterInputPassword.value ? "Password does not match." : "")'>
                            <div class="form-group form-row">
                                <div class="col">
                                    <label for="RegisterInputFirstname">First name</label>
                                    <input type="text" class="form-control" name="RegisterInputFirstname" id="RegisterInputFirstname" placeholder="First name" required>
                                </div>
                                <div class="col">
                                    <label for="RegisterInputLastname">Last name</label>
                                    <input type="text" class="form-control" name="RegisterInputLastname" id="RegisterInputLastname" placeholder="Last name" required>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="RegisterInputEmail">Email Address</label>
                                <input type="email" class="form-control" name="RegisterInputEmail" id="RegisterInputEmail" aria-describedby="emailHelp" placeholder="Email address" required>
                                <small id="emailHelp" class="form-text text-muted">We'll never send Spam Mails.</small>
                            </div>
                            <div class="form-group form-row">
                                <div class="col">
                                    <label for="RegisterInputPassword">Password</label>
                                    <input type="password" class="form-control" name="RegisterInputPassword" id="RegisterInputPassword" pattern="^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,20}$" placeholder="Password" required>
                                    <small id="RegisterpasswordHelpInline" class="text-muted">Must be 8-20 characters long.</small>
                                </div>
                                <div class="col">
                                    <label for="RegisterInputConPassword">Confirm Password</label>
                                    <input type="password" class="form-control" name="RegisterInputConPassword" id="RegisterInputConPassword" placeholder="Confirm password" required>
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="RegisterInputPhoneNo">Phone Number</label>
                                <input type="tel" id="RegisterInputPhoneNo" name="RegisterInputPhoneNo" class="form-control" pattern="[0-9]{4}[0-9]{2}[0-9]{4}" placeholder="Phone number" required>
                                <small id="RegisterPhoneHelpInline" class="text-muted">Enter Valid Number</small>
                            </div>
                            <button type="submit" class="btn btn-primary" >Register</button>
                        </form>
                    </div>
                    <div class="modal-footer d-flex justify-content-center">
                        <small class="text-muted">Already Register!!</small>
                        <button class="btn btn-danger" data-target="#LoginstaticBackdrop" data-toggle="modal" data-dismiss="modal">Login</button>
                    </div>
                </div>
            </div>
        </div>

并在下面给出的 main.py 中添加数据库

@web.route('/')
def home():
    return render_template('Home.html')

@web.route('/Register',methods=['POST','GET'])
def Register():
    if request.method == 'POST':
        Fname = request.form['RegisterInputFirstname']
        Lname = request.form['RegisterInputLastname']
        Email = request.form['RegisterInputEmail']
        Password = request.form['RegisterInputPassword']
        Phone = request.form['RegisterInputPhoneNo']

        cur = MysqL.connection.cursor()
        cur.execute("INSERT INTO USERS (Fname,Lname,Email,Pass,Phone) VALUES (%s,%s,%s)",(Fname,Password,Phone))
        MysqL.connection.commit()
        return render_template('...')

@web.route('/Login','GET'])
def Login():
    if request.method == 'POST':
        Email = request.form['loginInputEmail']
        Password = request.form['loginInputPassword']

        cur = MysqL.connection.cursor()
        cur.execute("SELECT * FROM USERS WHERE Email='" + Email + "' AND Pass='" + Password + "'")
        data = cur.fetchone()
        cur.execute("SELECT Fname FROM USERS WHERE Email='" + Email + "'")
        username = cur.fetchone()

        if (details and username) == None:
            a = "Email Id or Password Invalid!!"
            ermsg = jsonify({'errormsg': a})
            return render_template('Login.html',ermsg = ermsg)
        else:
            un = username[0]
            uname = jsonify({'unmsg' : un})
            return render_template('Home.html',uname = uname)

至于显示错误信息,我认为应该是通过jsonify、jquery、javascript,所以对此,我对如何将数据从flask传输到ajax感到困惑。

请帮我解决这个问题,提前谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?