Fortsetzung der Multi-Plattform-Entwicklung mit Electron und Python

Sie sagten Studie Python. Außerdem habe ich gesagt, dass Sie HTML5 nicht lernen müssen. Das ist *** Lüge ***.

Ergebnisse verschiedener Studien

Es ist nicht gerade eine Lüge, aber was ich bei der Untersuchung des Inhalts gefunden habe, wird mithilfe der Funktion von Python und der Funktion Flask (jinja2) realisiert.

Code, den ich tatsächlich ausprobiert habe

Ich habe eine Beschreibung nur mit Flask gemacht, wie unten gezeigt, und es mit "Elektron" versucht, aber es funktioniert richtig.

$ cat index.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from __future__ import print_function
import time
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<!DOCTYPE html>\
<html lang=\"en\">\
  <head>\
    <meta charset=\"utf-8\">\
    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\
    <script src=\"http://code.jquery.com/jquery-1.11.1.min.js\"></script>\
    <link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7\" crossorigin=\"anonymous\">\
    <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js\" integrity=\"sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS\" crossorigin=\"anonymous\"></script>\
  </head>\
  <body>\
    <div class=\"container\">\
      <div class=\"header\">\
        <h3 class=\"text-muted\">Yesterday</h3>\
      </div>\
    </div>\
  </body>\
</html>"

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=5000)

Sauberere Codierung

Es ist besser, Folgendes zu tun, als HTML in Python zu schreiben.

Inhalt von index.py

$ cat index.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from __future__ import print_function
import time
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=5000)

Inhalt von templates / index.html

$ cat templates/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted">Sample Page</h3>
      </div>
    </div>
  </body>
</html>

So wechseln Sie zwischen den Seiten hin und her

Wenn Sie "templates / sample / sample.html" wie unten gezeigt erstellen, Jinja2 verwenden und einen Link einfügen, scheint dies zu funktionieren. (Wenn der Vorlagenordner mehrere Dateien enthält, scheint dies nicht zu funktionieren?)

$ cat index.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from __future__ import print_function
import time
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    next = u'Ich gehe zur nächsten Seite'
    return render_template('/index.html', message=next)

@app.route('/sample/')
def sample():
    return render_template('/sample/sample.html')

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=5000)

Inhalt von /templates/index.html

$ cat Downloads/work/templates/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  </head>
  <body>
    <div class="container">
      <div class="header">
        {% if message %}
        <h3 class="text-muted"><a href="/sample">{{message}}</a></h3>
        {% endif %}
      </div>
    </div>
  </body>
</html>

Inhalt von /templates/sample/sample.html

$ cat Downloads/work/templates/sample/sample.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  </head>
  <body>
    <div class="container">
      <div class="header">
        <h3 class="text-muted"><a href="/">Ich werde wiederkommen</a></h3>
      </div>
    </div>
  </body>
</html>

Über Jinja2

Ich habe die Details nicht unterdrückt, also werde ich mich daran gewöhnen, aber es scheint, dass Variablen und if-Anweisungen verwendet werden können und sie in HTML behandelt werden. Und es scheint, dass das Innere von app.route, das in Python geschrieben ist, streng ist. Jinja2 scheint als Ordner zu gelten, wenn es mit "/" endet, und als Datei, wenn es wie "/ sample" endet. Infolgedessen dachte ich, ich könnte nicht mit / sample darauf zugreifen, aber ich musste das Verzeichnis durchsuchen.

In der HTML-Datei wird der Inhalt von / templates / index.html als Nachricht unter Verwendung der von Python empfangenen Variablen angezeigt. Darüber hinaus unterscheidet sich der Link von der App.route von Python und kann mit / sample aufgerufen werden. Diese Beschreibung ist nah an app.route, aber locker. Es spielt keine Rolle, ob am Ende kein / steht. Es verweist jedoch nicht direkt auf sample.html.

Umgekehrt können Sie bei der Rückkehr von "/ templates / sample / sample.html" nach "/ templates / index.html" nur mit "/" zurückkehren.

Zusammenfassung

Schließlich scheinen wir HTML5 zu machen. Ich werde mein Bestes geben…

(˙-˙). oO (So sieht es aus wie die Cordova, die in der Entwicklung von iOS-Plattformen verwendet wird ...)

Referenz-URL

Recommended Posts

Fortsetzung der Multi-Plattform-Entwicklung mit Electron und Python
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Fröhliche GUI-Konstruktion mit Elektron und Python
TRIE-Baumimplementierung mit Python und LOUDS
Beispiel für das Lesen und Schreiben von CSV mit Python
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Electron ist die beste Lösung für die plattformübergreifende Entwicklung von Python
Lesen und Schreiben von Dateien mit Slackbot ~ Bot-Entwicklung mit Python ~
[Python] Kapitel 01-02 Über Python (Ausführung und Installation der Entwicklungsumgebung)
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Versionsverwaltung von Node, Ruby und Python mit anyenv
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Python mit Pyenv und Venv
Quellinstallation und Installation von Python
Funktioniert mit Python und R.
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Führen Sie mit Python und Matplotlib eine Isostromanalyse offener Wasserkanäle durch
[Hikari-Python] Kapitel 05-10 Steuerungssyntax (Unterbrechung und Fortsetzung der iterativen Verarbeitung)
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Erkennen Sie mit Python Objekte einer bestimmten Farbe und Größe
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Beispiel für das Parsen von HTTP GET und JSON mit Pfefferpython
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Umgebungskonstruktion von Python und OpenCV
Leuchtendes Leben mit Python und OpenCV
Die Geschichte von Python und die Geschichte von NaN
Roboter läuft mit Arduino und Python
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Installation von SciPy und matplotlib (Python)
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
Erste Schritte mit Python Grundlagen von Python
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Othello-Spieleentwicklung mit Python
Lebensspiel mit Python! (Conways Spiel des Lebens)
Lesen und Schreiben von NetCDF mit Python
10 Funktionen von "Sprache mit Batterie" Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python
Implementierung der Dyxtra-Methode durch Python
Mehrfachintegration mit Python und Sympy
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
Anwendungsentwicklung mit Docker + Python + Flask
Zusammenfassung der Python-Indizes und -Slices
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Grundlegendes Studium von OpenCV mit Python
Reputation von Python-Büchern und Nachschlagewerken
Ich habe die Geschwindigkeit von Hash mit Topaz, Ruby und Python verglichen
Geschwindigkeitsvergleich der Volltextverarbeitung von Wiktionary mit F # und Python
Bedienbarkeit von Arm und mobilem Roboter Ellipse mit Python zeichnen
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion