我想构建一个Python-Flask应用程序并使用SAPUI5。 我试图在Flask中构建这个小型应用程序:https://sapui5.hana.ondemand.com/1.60.1/#/sample/sap.m.tutorial.walkthrough.05/preview
一切正常,我的代码如下:
app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("index.html")
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<title>SAPUI5 Walkthrough</title>
<script
id="sap-ui-bootstrap"
src="/static/sap-ui-core.js"
data-sap-ui-theme="sap_belize"
data-sap-ui-libs="sap.m"
data-sap-ui-compatVersion="edge"
data-sap-ui-preload="async"
data-sap-ui-resourceroots='{
"static": "./"
}'
>
</script>
<script>
sap.ui.getCore().attachInit(function () {
sap.ui.xmlview({
viewName: "mvc.view.App"
}).placeAt("content");
});
</script>
</head>
<body class="sapUiBody" id="content">
</body>
</html>
App.view.xml
<mvc:View
controllerName="mvc.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Button
text="Say Hello"
press="onShowHello"/>
</mvc:View>
App.controller.js
sap.ui.define([
"sap/ui/core/mvc/Controller"
], function (Controller) {
"use strict";
return Controller.extend("mvc.App", {
onShowHello : function () {
// show a native JavaScript alert
/* eslint-disable no-alert */
alert("Hello World");
/* eslint-enable no-alert */
}
});
});
我的问题是:如何将参数从我的app.py传递到App.view.xml和App.controller.js?
最后,我要实现以下目标:
app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("index.html", text="Hello World", buttonlabel="Say Hello")
if __name__ == '__main__':
app.run()
App.view.xml
<mvc:View
controllerName="mvc.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Button
text="{{ buttonlabel }}"
press="onShowHello"/>
</mvc:View>
App.controller.js
sap.ui.define([
"sap/ui/core/mvc/Controller"
], function (Controller) {
"use strict";
return Controller.extend("mvc.App", {
onShowHello : function () {
// show a native JavaScript alert
/* eslint-disable no-alert */
alert({{ text }});
/* eslint-enable no-alert */
}
});
});
答案 0 :(得分:1)
简短答案:UI5不是模板引擎
长答案:UI5应用由静态文件(.js,.html,.css)组成。因此,您的python服务器必须将它们原样返回给客户端。
您的UI5应用和python服务器之间的任何通信都需要通过REST调用完成。