首页 > 解决方案 > 使用Flask单击按钮后无法打开html

问题描述

我基本上有一个带有三个按钮的 base.html,我想要做的是每个按钮单击都会打开一个相应的 html 视图。

base.html

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>User Management</h2>
   <br>

  <button type="button" class="btn btn-info btn-lg">Create New User</button>      
  <button type="button" class="btn btn-info btn-lg">Deactivate User</button>      
  <button type="button" class="btn btn-info btn-lg">Change User Password</button>      


  {% block content %}
  {% endblock %}
</div>
</body>
</html>

我有 3 个扩展 base.html 的其他 html 文件,这是其中之一:

deactivate_user.html


{% extends 'base.html' %}
{% block header %}
  <h1>{% block title %}Deactivate User{% endblock %}</h1>
{% endblock %}

{% block content %}
<div class="container mt-3">
  <h3>Deactivate User</h3>
  <br>
  <form action="{{ url_for('deactivate_user')}}" method='POST'>
    <div class="input-group mb-3">
      <div class="input-group-prepend">
        <span class="input-group-text">@</span>
      </div>
      <input type="text" class="form-control" placeholder="Username" id="username" name="username" required>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
</div>
{% endblock %}

这是烧瓶代码


@app.route('/deactivate_user', methods = ('GET', 'POST'))
def deactivate_user():
    if request.method == 'POST': 
        username = request.form['username']
        error = None
        if not username: 
             error = 'Username is required.'
             
        if error is None: 
            flash('User has been deactivated successfully.', 'success')

        flash(error, 'error')
    else:
        return render_template('deactivate_user.html')

但是,我无法将按钮单击与应用程序路由路径相关联。

我在按钮标签中尝试了 onClick 方法,但这只接受 javascript。

我需要将它作为 GET 请求发送到 /deactivate_user 应用程序路由。

标签: pythonhtmlflask

解决方案


您是否允许将按钮更改为锚标记?

<a class="btn btn-info btn-lg" role="button" href="{{ url_for('deactivate_user') }}">Deactivate user</a>
``

推荐阅读