2 votes

Flask, SAP UI5 et MVC

Je veux construire une application Python-Flask et utiliser SAPUI5. J'ai essayé de construire cette petite application en Flask : https://sapui5.hana.ondemand.com/1.60.1/#/sample/sap.m.tutorial.walkthrough.05/preview

Tout a bien fonctionné et mon code ressemble à ceci :

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 */
        }
    });

});

Ma question maintenant est : Comment puis-je passer des paramètres de mon app.py à l'App.view.xml et App.controller.js ?

À la fin, je veux obtenir quelque chose comme ceci :

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 */
        }
    });

});

2voto

fabiopagoti Points 343

Réponse courte : UI5 n'est pas un moteur de modèles

Réponse longue : Une application UI5 est composée de fichiers statiques (.js, .html, .css). Votre serveur python doit donc les renvoyer au client tels quels.

Toute communication entre votre application UI5 et votre serveur python doit se faire via des appels REST.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X