Python 如何运行在用户';s操作并向页面添加内容?
这个想法是用户按下按钮,烧瓶应该在页面上添加一些内容Python 如何运行在用户';s操作并向页面添加内容?,python,flask,Python,Flask,这个想法是用户按下按钮,烧瓶应该在页面上添加一些内容 在我的例子中,python和Flask不是一个随意的选择,因为python做了很多后门工作(例如js做不到) 完美的是,它应该只是一个页面,而不在另一个页面上重定向 所以我的问题是: 如何获得用户按下按钮并运行我想要的功能的时刻 如何使此函数在不重新加载的情况下在页面上添加一些生成的内容 正如一位评论者所说,您正在使用的web开发堆栈中缺少一些关键概念。让我解释一下 Flask是一个后端框架/服务器。它接收来自浏览器的请求,并生成和发送响应
在我的例子中,python和Flask不是一个随意的选择,因为python做了很多后门工作(例如js做不到)
完美的是,它应该只是一个页面,而不在另一个页面上重定向
所以我的问题是:
正如一位评论者所说,您正在使用的web开发堆栈中缺少一些关键概念。让我解释一下
- Flask是一个后端框架/服务器。它接收来自浏览器的请求,并生成和发送响应。您的浏览器可以发出请求并将响应作为新页面加载
- JavaScript在浏览器中运行(或者使用更通用的术语“前端”)。它可以更改当前页面的外观和行为,而无需重新加载。它可以向后端发出请求,处理接收到的结果并对其采取行动
- 运行一些javascript,在不发出任何请求的情况下做一些事情。例如,突出显示用户将鼠标悬停在其上方的按钮、自动完成用户从预定义列表中键入的内容、切换UI选项卡、隐藏/显示元素等
- 向后端发出请求,并将结果作为新页面加载。例如,跟踪网站上新页面的链接、提交表单、重新加载页面等。这就是10-15年前大多数web应用程序的工作方式
- 运行一些javascript并使用它在后台向后端发出请求。使用javascript处理结果并动态更新页面,而无需重新加载。这就是现在大多数web应用程序的工作方式
这与烧瓶无关。。。您想要的功能是javascript…:/好的,但正如我所说的,之所以选择python是因为我使用python包,它不能被js替代。它们彼此都不是替代品。。。它们的工作方式不同,flask管理您的后端。。。flask无法在不重新加载页面的情况下更改内容。。。您缺少解决问题所需的web技术堆栈知识的一些关键理解。好的,我将尝试找出如何使用js来实现这一点。非常感谢。非常感谢。首先回答问题。但是有必要使用jqvery吗?
from flask import Flask,render_template,request
app = Flask(__name__)
@app.route("/add_item")
def add_item():
#in reality you are doing something else i imagine
return "<li>%s</li>"%(request.args.get('name'))
@app.route('/')
def hello_world():
return render_template('index.html',items=["Item 1","Item 2","Item 3"])
if __name__ == '__main__':
app.run()
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
</head>
<body>
<ul id="items_holder">
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
<button id="do_something">Do Something</button>
</body>
<script src="/static/app.js"></script>
</html>
$(function(){
$("#do_something").click(function(){
var item_name = prompt("enter item name")
$.get("/add_item?name="+item_name,function(result_data){
$('#items_holder').append(result_data)
})
})
})