python flask render_template html无法正确渲染

萨摩斯

我正在构建一个实现用户登录的python flask应用程序,用户成功登录后,它将重定向到 userHome.html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Python Flask Bucket List App</title>
    <link href="http://getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet">
 
    <link href="http://getbootstrap.com/examples/jumbotron-narrow/jumbotron-narrow.css" rel="stylesheet">
    <link href="../static/css/signup.css" rel="stylesheet">
</head>
<body>
    <div class="container">
        <div class="header">
            <nav>
                <ul class="nav nav-pills pull-right">
                    <li role="presentation" class="active"><a href="/logout">Logout</a>
                    </li>
                </ul>
            </nav>
            <h3 class="text-muted">Python Flask App</h3>
        </div>
 
        <div class="jumbotron">
            <h1>Welcome Home !!</h1>   
        </div> 
        <footer class="footer">
            <p>&copy; Company 2015</p>
        </footer>  
    </div>
</body>
</html>

和Python代码以执行return render_template('userHome.html')validateLogin

@app.route('/validateLogin',methods=['POST'])
 def validateLogin():
 cursor = None
 try:
      _username = request.form['inputName']
      _password = request.form['inputPassword']

     # connect to mysql

      conn = mysql.connect()
      cursor = conn.cursor() 
      cursor.callproc('sp_validateLogin',(_username,_password))
      data = cursor.fetchall()

      if len(data) > 0:            
        return render_template('userHome.html')
      else:
        return render_template('error.html', error = "Wrong Username or 
        Password")         

  except Exception as e:
      return render_template('error.html',error = str(e))
  finally:
      if cursor:
          cursor.close()
          conn.close()

signin.js

  $(function(){
  $('#btnSignIn').click( function(){

    $.ajax({
        url: '/validateLogin',
        data: $('form').serialize(),
        type: "POST",
        success: function(response){
            console.log(response);
        },
        error: function(error){
            console.log(error);
        }
     });
  });
});

最后是signin.html

!DOCTYPE html>
<html lang="en">
  <head>
    <title>Sign In</title>


    <link href="http://getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet">

    <link href="http://getbootstrap.com/examples/jumbotron-narrow/jumbotron-narrow.css" rel="stylesheet">
    <link href="../static/signup.css" rel="stylesheet">
    <script src="/static/js/jquery-3.1.1.js"></script>
    <!--<script src="/static/js/jquery-3.1.1.min.map"></script>-->
    <script src="/static/js/signin.js"></script>

  </head>

  <body>

    <div class="container">
      <div class="header">
        <nav>
          <ul class="nav nav-pills pull-right">
            <li role="presentation" ><a href="main">Home</a></li>
            <li role="presentation" class="active"><a href="#">Sign In</a></li>
            <li role="presentation"><a href="showSignUp">Sign Up</a></li>

          </ul>
        </nav>
        <h2 class="text-muted">Release Control System</h2>
      </div>

      <div class="jumbotron">
        <h1>Log In</h1>
        <form class="form-signin">
        <label for="inputName" class="sr-only">Name</label>
        <input type="name" name="inputName" id="inputName" class="form-control" placeholder="Name" required autofocus>
        <!--<label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" name="inputEmail" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>-->
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" name="inputPassword" id="inputPassword" class="form-control" placeholder="Password" required>

        <button id="btnSignIn" class="btn btn-lg btn-primary btn-block" type="button">Sign in</button>
      </form>
      </div>



      <footer class="footer">
        <p>Copyright 2017 Foxconn CABG &copy; All Rights Reserved.</p> 
      </footer>

    </div>
  </body>
</html>

但是,当我成功登录时,它不会定向到该userHome.html页面,而是显示所有html实体意味着模板正在运行,但浏览器处理不正确。

我尝试了许多技巧,例如:

    headers = {'Content-Type': 'text/html'}
    return make_response(render_template('userHome.html'),200,headers)

但它仍会返回html实体,而不是html页面。这已经使我迷惑了好几天了,在此先感谢。

迈克尔·尤斯里(Michael Yousrie)

由于我不知道如何向ajax发送重定向请求并执行它。我将简单地分享我做事的方式。

# Python Code
@app.route('/login')
def login():
    # check if user is not logged in then render the login form
    if user_not_logged_in():
        return render_template('login_form.html')
    # if user logged in, then redirect to userHome
    else:
      return redirect(url_for('userHome'))

from flask import jsonify
@app.route('/validateLogin', methods=['POST'])
def validateLogin():
    # do some stuff and check for validation
    if stuff_goes_well:
        return jsonify({'data': 'success'})
    else:
        return jsonify({'data': 'failure'})

@app.route('/userHome')
def userHome():
    # check if user is logged in 
    if logged_in_user_session_exists():
        return render_template('userHome.html')
    else:
        # user is not logged in so redirect him to the login page
        return redirect(url_for('login'))

# jQuery code
$.ajax({
    url: "/validateLogin",
    type: "POST",
    dataType: "json",
    data: data_here,
    success: function(response){
        if(response.data == 'success'){
           # success was sent so the user logged in successfully, redirect to user home
            window.location.replace('/userHome');
        }else{
            # there was an error in the logging in
            alert('there was an error!');
        }
    }
});

概括地说:用ajax将数据发送到Python。然后让Python处理验证和数据分析。然后,如果一切顺利,请告诉jQuery“嘿,这里很酷”(由我们发送的“成功”字符串表示)。如果有什么问题,那么我们告诉jQuery我们有问题,因此我们发送了'failure'字符串。然后在jQuery中,我们对发送的字符串进行操作。如果成功,则将用户重定向到所需的URL(在本例中为/ userHome)。如果发送失败,那么我们说有错误。

请注意,这些python检查非常重要,因此用户无需在URL中键入“ / userHome”,并且可以在未登录时仅查看页面。

希望这个对你有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Flask从变量中渲染文本,例如render_template

来自分类Dev

Flask:将HTML数据帧处理为render_template

来自分类Dev

Flask render_template() & **locals() arg 不工作......不会在 HTML 文本中显示 python 变量

来自分类Dev

python flask render_template和另一个返回值

来自分类Dev

flask render_template无法与锚标记一起使用-jinja2.exceptions.TemplateNotFound

来自分类Dev

render_template中的flask参数

来自分类Dev

如何从ajax POST表单提交使用Flask的render_template

来自分类Dev

Flask,json,render_template,表单操作,数据表

来自分类Dev

Flask render_template数据发送,在jQuery中处理

来自分类Dev

如何从ajax POST表单提交使用Flask的render_template

来自分类Dev

Flask 在 render_template 后追加结果的问题

来自分类Dev

render_template无法对对象进行jsonify

来自分类Dev

烧瓶:在返回的render_template()或redirect()中包含HTML

来自分类Dev

Redis后台作业完成后如何返回flask render_template?

来自分类Dev

删除数据库中的条目后,flask render_template()不显示主页

来自分类Dev

控制如何在Flask中的render_template之前流回到语句?

来自分类Dev

render_template()无法正常工作,无法使用新数据更新页面

来自分类Dev

烧瓶render_template无法与锚标记一起使用-jinja2.exceptions.TemplateNotFound

来自分类Dev

使用render_template有条件地呈现HTML段

来自分类Dev

无法使用外部CSS和Javascript渲染Python Flask页面

来自分类Dev

无法引用HTML(python / flask)中的CSS

来自分类Dev

Flask Render模板重复HTML

来自分类Dev

无法从 Flask 执行 python 脚本

来自分类Dev

db无法在html中循环-python,sqlalchemy,flask

来自分类Dev

Rails RSpec render_template错误

来自分类Dev

烧瓶中的动态render_template()

来自分类Dev

render_template 中的空列表

来自分类Dev

如何正确记录python flask路由

来自分类Dev

HTML View Postgresql TextArea渲染换行符或段落-python flask

Related 相关文章

  1. 1

    Python Flask从变量中渲染文本,例如render_template

  2. 2

    Flask:将HTML数据帧处理为render_template

  3. 3

    Flask render_template() & **locals() arg 不工作......不会在 HTML 文本中显示 python 变量

  4. 4

    python flask render_template和另一个返回值

  5. 5

    flask render_template无法与锚标记一起使用-jinja2.exceptions.TemplateNotFound

  6. 6

    render_template中的flask参数

  7. 7

    如何从ajax POST表单提交使用Flask的render_template

  8. 8

    Flask,json,render_template,表单操作,数据表

  9. 9

    Flask render_template数据发送,在jQuery中处理

  10. 10

    如何从ajax POST表单提交使用Flask的render_template

  11. 11

    Flask 在 render_template 后追加结果的问题

  12. 12

    render_template无法对对象进行jsonify

  13. 13

    烧瓶:在返回的render_template()或redirect()中包含HTML

  14. 14

    Redis后台作业完成后如何返回flask render_template?

  15. 15

    删除数据库中的条目后,flask render_template()不显示主页

  16. 16

    控制如何在Flask中的render_template之前流回到语句?

  17. 17

    render_template()无法正常工作,无法使用新数据更新页面

  18. 18

    烧瓶render_template无法与锚标记一起使用-jinja2.exceptions.TemplateNotFound

  19. 19

    使用render_template有条件地呈现HTML段

  20. 20

    无法使用外部CSS和Javascript渲染Python Flask页面

  21. 21

    无法引用HTML(python / flask)中的CSS

  22. 22

    Flask Render模板重复HTML

  23. 23

    无法从 Flask 执行 python 脚本

  24. 24

    db无法在html中循环-python,sqlalchemy,flask

  25. 25

    Rails RSpec render_template错误

  26. 26

    烧瓶中的动态render_template()

  27. 27

    render_template 中的空列表

  28. 28

    如何正确记录python flask路由

  29. 29

    HTML View Postgresql TextArea渲染换行符或段落-python flask

热门标签

归档