我对JavaScript,Python和Web开发非常陌生,但是我试图创建一个网页,每当按下一个键时就会接收数据,并将其发送到python后端进行处理。然后,Python后端将信息发送回JavaScript页面,而JavaScript页面将对此作出响应。这个过程需要连续发生,或者直到被Python部分的某个响应终止为止。我已经编写了一个脚本,可以在Javascript端收集我需要的所有数据,并且我有一个处理它的Python应用程序(它需要进行一点编辑才能一次放入一个数组,但这不是问题) 。目前,我的麻烦集中在让他们进行沟通上。我正在使用Flask,因为它处于开发的早期阶段,并且我读过它使它成为一种简单有效的工具。
我首先尝试遵循有关如何启动和运行该设备的教程,但并没有取得太大的成功。我在网上找到的所有教程都以一个示例为中心,这让我对常规感到困惑。我在下面显示的代码是我必须从其中一个教程中使用的代码。我知道render_template会打开给定的文件(在本例中为index.html)。我的第一个问题是:我是否会将JavaScript部分作为脚本放入该索引文件中?我读过,逻辑通常应该放在模板之外,但是我不确定我还要如何运行该脚本-它应该在用户在网站上进行的操作下连续运行。其他一些教程已经表明,答案可能是使用多个@ app.route语句,但我什至不确定@ app.route到底在做什么。我知道它是一个装饰器,但是即使经过基础研究,对于它的功能和它所发生的变化,我仍然难以理解。 @ app.route有什么作用?我遵循的另一个教程给了我类似如下所示的内容,但是我对每个@ app.route的功能有些困惑。我也不确定什么是request.get_json()。据我所读,JSON是一种通过其属性描述数据的方式,而不是包括所有数据本身,但是我不确定请求是做什么的(我知道它是从flask导入的)。
从这里开始,JavaScript需要具有post函数,对吗?我假设Python将“获取” JavaScript“发布”的内容,但是第二篇教程的代码似乎表明其他情况(因为通过request.get_json()请求数据(我假设)的函数也被列为method = [' POST'])。我还假设我能够在前端运行“ POST”请求,作为响应事件监听器(在按键上)的功能的一部分。在Python获取JavaScript发布的内容之后,Python将发布响应,JavaScript将获取响应并以实物方式响应。我假设这就是所有方法。
最后,有人对JavaScript如何发布或获取请求有解释或资源吗?我有一些资源可以尝试,但是我还没有很多时间来充分探索它们。我在代码部分中包含了到目前为止我已经尝试过的内容。
总而言之,当我进入前端和后端开发领域时,我感到有些不知所措。我感觉好像我了解它背后的总体思想,但是许多细节对我来说非常混乱。让我知道是否有什么我不知道的线索-谢谢您的帮助,很抱歉,这还不够具体。
// Tutorial Python code
import os
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html", message = "Hello Flask!", contacts = ['c1', 'c2', 'c3', 'c4', 'c5']);
if __name__ == "__main__":
app.run()
// Corresponding Tutorial HTML
<!DOCTYPE html>
<html>
<head>
<title>Flask Template Example</title>
</head>
<body>
<div>
<p>{{ message }}</p>
<p>{{ contacts }}</p>
<p>My Contacts:</p>
<ul>
{% for contact in contacts %}
<li>{{ contact }}</li>
{% endfor %}
</ul>
</div>
</body>
</html>
// Second tutorial Python, two @app.route
import sys
from flask import Flask, render_template, request, redirect, Response
import random, json
app = Flask(__name__)
@app.route('/')
def output():
return render_template('index.html', name='Joe')
@app.route('/reciever', methods = ['POST'])
def worker():
data = request.get_json()
result = ''
for item in data:
result += str(item['make']) + '\n'
return result
if __name__ == "__main__":
app.run()
// JavaScript communication first attempt (I was sending them to the second tutorial's Python code)
var sentArray = {"array" : [key, start, finish, holdtime, ud, uu, dd, 1]};
$.post("reciever",sentArray,function(){
});
event.preventDefault();
// JavaScript communication second attempt
var sentArray = {"array" : [key, start, finish, holdtime, ud, uu, dd, 1]};
fetch('/typing', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
body:
{"array" : [key, start, finish, holdtime, ud, uu, dd, 1]}
}
});
event.preventDefault();
当前,我收到500错误,表明我没有正确处理某些事情。我不确定是什么,坦率地说,有数百种方法可以解决这个问题。感谢您的帮助!