首页 > 解决方案 > 在 HTML 按钮中使用 url_for 传递参数

问题描述

当我单击按钮时,我想从 HTML 向 url_for 传递一些参数。主要问题是没有来自任何形式的数据。

请原谅我是否有一些简单的解决方案,因为这是我第一次使用 Python Flask 开发网页。

我在 HTML 代码(welcome_user.html)中试过这个:

<html lang="en">
{% extends 'bootstrap/base.html' %}
<head>
    <title>{% block title %}Welcome {{user}}{% endblock %}</title>
</head>
<body>
{% block body %}
<div class="buttons">
    <button type="button" class="toggle-button" onclick="window.location.href='{{ url_for ( 'user_del' , usr = {{ user }} ) }}'">Delete User</button>
</div>
{% endblock %}
</body>
</html>

Python烧瓶服务器端代码:


@app.route("/welcome_<usr>")
def user_welcome(usr):
    try:
        return render_template("welcome_user.html", user=usr)
    except Exception as exc:
        print(f"Error {exc} while displaying user welcome page.")

@app.route("/user_deletion")
def user_del(user):
    try:
        fn_obj.delete_user(user)
        return render_template("index.html", usr=user)
    except Exception as exc:
        print(f"Error {exc} while deleting user...")

但这在呈现 html 页面本身时会引发一些错误。这是完整的回溯:

127.0.0.1 - - [18/Jun/2021 22:27:33] "GET /welcome_new_user001 HTTP/1.1" 500 -
Traceback (most recent call last):
  File "<root_path>\flask\app.py", line 2088, in __call__
    return self.wsgi_app(environ, start_response)
  File "<root_path>\flask\app.py", line 2073, in wsgi_app
    response = self.handle_exception(e)
  File "<root_path>\flask\app.py", line 2070, in wsgi_app
    response = self.full_dispatch_request()
  File "<root_path>\flask\app.py", line 1516, in full_dispatch_request
    return self.finalize_request(rv)
  File "<root_path>\flask\app.py", line 1535, in finalize_request
    response = self.make_response(rv)
  File "<root_path>\flask\app.py", line 1698, in make_response
    raise TypeError(
TypeError: The view function for 'user_welcome' did not return a valid response. The function either returned None or ended without a return statement.
Error expected token ':', got '}' while displaying user welcome page.
127.0.0.1 - - [18/Jun/2021 22:27:34] "GET /welcome_new_user001?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 200 -
127.0.0.1 - - [18/Jun/2021 22:27:34] "GET /welcome_new_user001?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 200 -
127.0.0.1 - - [18/Jun/2021 22:27:34] "GET /welcome_new_user001?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 200 -

标签: pythonhtmlflask

解决方案


首先你在括号内使用了括号{{}},使用这个

在你的路线中添加这个

@app.route("/user_deletion<user>")

现在在 html 中使用这个

 `"window.location.href={{ url_for ( 'user_del' , user =  user ) }}"`

你应该在 except 部分返回一些东西,这样就不会产生错误。


推荐阅读