flask html 下一页 第几页,Python / Flask / HTML-在新窗口而非首页中呈现HTML

我有一个Python代码,正在使用Flask创建网页。在主页中,我正在填写一个表单,使用一个按钮提交,它会基于输入内容显示一个表格。

我遇到的问题是,一旦单击按钮提交表单,它就会在同一网页上呈现表格。我想使用JavaScriptwindow.open()或您可能建议的其他任何方法来创建一个新窗口,以将该表呈现在新窗口中,并使主页保持原样。我试着环顾四周,似乎什么也无法工作。我已经读完了这个问题和这个问题。但是这些建议似乎与我的需求不符。

这是我的代码:

Python代码

fromflaskimportFlask,render_template,request,app=Flask(__name__)defget_table(user_input):...returndict//returns list of dictionaries, for example...//dict = [{'name':'Joe','age':'25'},// {'name':'Mike','age':'20'},// {'name':'Chris','age':'29'}]@app.route("/")defhome():returnrender_template('home.html')@app.route("/table",methods=['POST'])deftable():user_input=request.form['input']dict_table=get_table(user_input)//return list of dictionariesreturnrender_template('table.html',dict_table=dict_table)if__name__=='__main__':app.run(debug=True)

home.html

HomepageInputClick Me!

table.html

Table{% if dict_table %}{% for key in dict_table[0] %}{{ key }}{% endfor %}{% endif %}

{% for dict in dict_table %}

{% for value in dict.values() %}{{ value }}{% endfor %}{% endfor %}

有人可以清楚地说明我如何单击主页上的表单提交按钮,停留在主页home.html上,并使table.html中的表在新窗口中打开(可能使用window.open()JavaScript或其他方法) ?

如果有人可以指导我完成提供的代码的操作步骤,并特别向我展示在哪里调用函数之类的东西,我将不胜感激。我是新来瓶/ HTML / JS,我只是想学仅供个人使用,我得到的是只显示了如何在一个新的选项卡中显示如google.com一个URL,沮丧阅读链接和文档是不是我想要的谢谢!

解决方案

这里的关键概念是AJAX(异步JavaScript和XML)。简而言之,它是一种架构,可以在后台将请求发送到服务器(称为异步请求),然后根据从服务器接收到的结果修改Web浏览器当前显示的页面的内容,避免了以及服务器不会再次传输完整页面。

第二步:解决您的问题

首先我们写路线:

fromflaskimportFlask,render_template,request,app=Flask(__name__)user_input=Nonedefget_table(user_input):...returndict//returns list of dictionaries, for example...//dict = [{'name':'Joe','age':'25'},// {'name':'Mike','age':'20'},// {'name':'Chris','age':'29'}]@app.route('/')defhome():returnrender_template('home.html')@app.route('/_ajax_user_input')defajax_user_input():globaluser_input

user_input=request.args.get('user_input',0,type=int)return"ok"@app.route("/table")deftable():x=user_input

dict_table=get_table(x)//return list of dictionariesreturnrender_template('table.html',dict_table=dict_table)

在攻击模板之后:

home.html:

InputClick Me!

table.html:

{% if dict_table %}{% for key in dict_table[0] %}{{ key }}{% endfor %}{% endif %}

{% for dict in dict_table %}

{% for value in dict.values() %}{{ value }}{% endfor %}{% endfor %}

基本上,这是发生了什么:

当我单击按钮时,我调用Javascript脚本:

$('.test').bind('click',function(){

This sends an ajax request to FLASK, which consists in executing the ajax_user_input() function:

$.getJSON($SCRIPT_ROOT+'/_ajax_user_input',

To this function I send a data (the value selected by the user in the select tag) and this data is stored in the variable user_input:

user_input:$('#input').val(),

On the side of Flask I get the data and I store it in a global variable that I named user_input too:

globaluser_input

user_input=request.args.get('user_input',0,type=int)

Then in my script I call a javascript method that allows me to open a url in a new tab (more details here):

window.open('http://127.0.0.1:5000/table','_blank');

The 'table' route, stores in the variable x the data previously stored in my global variable (user_input), then it calls the function get_table() (by passing him the variable x in parameter) which returns a list of the dictionaries, and finally it returns the page table.html with the list of the dictionaries in parameter:

x=user_input

dict_table=get_table(x)returnrender_template('table.html',dict_table=dict_table)

I hope this will help you, even though I am convinced that there are many other ways to do it, perhaps more effective.

站长简介:前每日优鲜python全栈开发工程师,自媒体达人,逗比程序猿,钱少话少特宅,关注我,做朋友, 我们一起谈人生和理想吧!我的公众号:想吃麻辣香锅

关注公众号回复充值+你的账号,免费为您充值1000积分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值