python - 在 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 -
解决方案
首先你在括号内使用了括号{{}}
,使用这个
在你的路线中添加这个
@app.route("/user_deletion<user>")
现在在 html 中使用这个
`"window.location.href={{ url_for ( 'user_del' , user = user ) }}"`
你应该在 except 部分返回一些东西,这样就不会产生错误。
推荐阅读
- c++ - 以下两个字符串案例有什么区别
- events - 为什么除了 += 和 -= 接口不能对它们的事件做任何事情?
- prometheus - 如何在 Alertmanager 触发的所有警报中添加环境作为前缀
- python-3.x - 使用 Python 在 Airflow 中动态获取值
- c# - radzen 服务中的控制器不会触发
- ios - SwiftUI 中的动画文本循环
- c# - 周长为 n 的三角形
- javascript - 如何访问来自两个网络摄像头的视频?
- javascript - 如何显示 html 内容 - nextjs
- javascript - 编写一个程序,在 Javascript 中为给定变量 n 创建一个乘法表