Letztes Mal Ich habe ein Github-Repository erstellt, weil es eine große Sache ist, bitte Stern (Bettler) SSAM-SimilaritySearchAppwithMNIST
Wie der Titel schon sagt. Dieses Mal können Sie die Daten leicht abrufen und die Datengröße ist klein. Wenn Sie das MNIST-Bild in das MNIST einfügen, finden Sie ein ähnliches MNIST-Bild. Wenn Sie eine solche App erstellen, können Sie über die ungefähre Nachbarschaftssuche und die Flasche sprechen. Ich werde auch mein eigenes Memo über das Erstellen einer App mit schreiben. Dieses Mal werde ich nach und nach auf Flask eingehen.
Flask Erstens bin ich mit Flask nicht sehr vertraut. Ich habe nur das Gefühl, dass es relativ einfach ist, eine Webanwendung zu erstellen, und dass sie sich gut zur Demonstration eignet.
Fahren wir fort, als würden wir zur vorherigen main.py hinzufügen.
Fügen wir zunächst die Bibliothek hinzu, die zur vorherigen main.py verwendet werden soll
from flask import Flask, render_template
from flask import request
Schreiben wir app.run unter die Funktion main (), die den vorherigen MNIST abruft. Läuft. Übrigens, wenn debug = True gesetzt ist, wird die Seite jedes Mal neu geladen und neu geladen, wenn die .py-Datei gespeichert wird. Wenn Sie möchten, dass .html und .css dasselbe tun, gab es meiner Meinung nach eine Möglichkeit, dies zu tun. Für weitere Informationen googeln Sie bitte in das Feld vor Ihnen.
if __name__ == "__main__":
main()
app.run(debug=True)
app.run(debug=True)
Nur weil ich das oben genannte geschrieben habe, gibt es noch keine App zum Ausführen. Lassen Sie uns eine App erstellen, die sofort ausgeführt wird.
Auch unter der main () habe ich bisher geschrieben
def main():
#Bisher erstellte Funktionen(Folgendes wird weggelassen)
#~Von hier aus hinzufügen
app = Flask(__name__)
@app.route('/')
def index(): #Bewegen Sie sich zuerst
return render_template('index.html',
message='Harova')
Lass uns schreiben. Im Moment sollten Sie eine App haben, die index.html öffnet. Sofort am Terminal
python main.py
Mal sehen. Einige Zeichen werden angezeigt. Wenn man genau hinschaut
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Sie können sehen, dass es geschrieben ist. Mit anderen Worten, die App wird unter der lokalen http://127.0.0.1:5000/ ausgeführt. Hoppla, ich werde es diesmal in Chrom betrachten. Seien Sie also vorsichtig, es kann sich in anderen Browsern anders verhalten. Übrigens benutze ich normalerweise einen Feuerfuchs. Wie auch immer, gehen wir mit Freude und Mut zu http://127.0.0.1:5000/. ... Hmm?
jinja2.exceptions.TemplateNotFound
jinja2.exceptions.TemplateNotFound: index.html
... Ich denke, es wird eine unklare Notation wie diese geben. Das sollte es sein, die App befiehlt Ihnen, zuerst index.html zu öffnen, aber index.html ist nicht vorbereitet. Ich war nachlässig. Erstellen wir also index.html.
Erstellen Sie zunächst einen Ordner mit dem Namen templates und erstellen Sie die Dateien index.html und layout.html darunter. Die aktuelle Dateistruktur sieht folgendermaßen aus.
.
├── blog #Notizen wie Blog-Beiträge
├── part1 #Archiv von Teil1
├── part2 #Archiv von Teil2
├── main.py #Dateien, die tatsächlich funktionieren
├── static #Der mit den Daten von MNIST und Annoy aus Teil 1
└── templates #Was ich diesmal gemacht habe
├── index.html
└── layout.html
Spielen Sie zuerst mit dem Inhalt von layout.html. Mit Flask können Sie ein gemeinsames Layout definieren. Das ist es, was es definiert. Ich habe keine Lust, etwas Besonderes zu tun, also schreibe ich es leicht.
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>SAMPLE</title>
</head>
<body>
<hr>
{% block content %}
{% endblock %}
</body>
</html>
Es ist so. Nicht in allgemeinem HTML gefunden
{% block content %}
{% endblock %}
Es gibt eine solche Notation, aber ich werde sie vorerst hier lassen.
layout.html ist eine sogenannte Vorlage. Es ist einfach, Header-Einstellungen zu schreiben, die schwierig sind, hier viele Male zu schreiben und sie in anderen HTML-Dateien zu lesen. Es ist bequem.
Lassen Sie uns abschließend mit dem Inhalt von index.html spielen.
Es ist jetzt noch mehr so, aber ich habe keine Lust, aufwändige Dinge zu machen, weil dies eine einfache Demo ist und ich HTML, CSS oder Javascript nicht so sehr mag (ich bin nicht vertraut genug, um die Arbeit zu erledigen). Ich mag Python einfach. Also schreibe ich den Code in einer anderen Atmosphäre als Python. Bitte lassen Sie uns in den Kommentaren wissen, wenn Sie hier etwas Seltsames finden. (Ich weiß jedoch nicht, ob es kommen wird, weil ich einen Amateur wie mich als Ziel annehme, der den Artikel lesen wird.)
Die Einführung ist etwas lang geworden. index.html. Lass uns schreiben.
{% extends "layout.html" %}
{% block content %}
<h3>Es ist der Titel</h3>
{{ message }}
{% endblock %}
Ich denke, es ist okay, mit so etwas zu beginnen. Worauf ich sofort achten möchte
{% extends "layout.html" %}
Schau dir das an. Dies ist der Teil, der layout.html lädt.
Und es steht unten geschrieben,
<h3>Es ist der Titel</h3>
{{ message }}
Und so weiter, geladen in layout.html
{% block content %}
{% endblock %}
Was dazwischen geschrieben wird, wird gelesen und gerendert. {{message}} ist der Teil, der von der Template-Engine (tabun) Jinja2 betrieben wird, die später erläutert wird. Denken Sie daran, dass wir message = 'halowa' als Rückgabewert in die index () -Funktion der ersten main.py setzen. Dies wird angezeigt. Wenn Sie dieser Variablen eine andere Zeichenfolge übergeben, wird diese angezeigt. Beim Studium der Programmierung wird es wichtig sein, sie angemessen zu ändern und zu bestätigen, dass dies mit Sicherheit der Fall ist. Bitte probieren Sie es aus.
Wenn Sie nun die obigen Dateien layout.html und index.html kopieren und einfügen, rufen Sie den Bearbeitungsbildschirm von main.py auf und versuchen Sie, die Datei zu speichern, ohne ctl + s oder command + s zu ändern. Dann wird etwas wie unten neu geladen und versucht, die Seite zu aktualisieren.
* Restarting with fsevents reloader
Schauen Sie sich die Seite noch einmal an.
Wird es nicht so angezeigt?
Inzwischen sind es bereits etwa 4000 Zeichen. Es ist nicht so weit fortgeschritten, wie ich es mir vorgestellt hatte, bevor ich über das Zeichnen eines Artikels nachgedacht habe, aber wenn ich versuche, das zu schreiben, was ich als nächstes schreiben möchte, scheint es von hier aus doppelt so lang zu sein. Halten Sie also hier an und fahren Sie das nächste Mal fort Es scheint besser, es zu wenden. Als ich den Manga schrieb, sah ich irgendwo, dass ich ein Vielfaches der Anzahl von Bänden schrieb, die ich ursprünglich erwartet hatte, aber mir wurde klar. Ich begann mit einem leichten Gefühl, aber es scheint eine lange Zeit zu sein.
Andererseits hatte ich das Gefühl, ich würde dich nicht über die langsamen Live-Videos sprechen lassen, die ich vor ein paar Mal gemacht habe, aber ist es der Unterschied, ob das Spiel das Hauptthema ist oder nicht? Wie auch immer, lassen Sie uns hier aufhören zu chatten und in die Zusammenfassung einsteigen.
Ist es diesmal möglich, mit Flask etwas wie eine Web-App zu erstellen? Ich ging zu diesem Punkt. Eigentlich frage ich mich, wie ich danach vorgehen soll, also denke ich, dass es beim nächsten Mal spät sein wird. Ich würde mich freuen, wenn ich mich so wiedersehen könnte. Bitte hinterlassen Sie einen Kommentar oder LGTM. Ich habe 2 Stunden gebraucht, um das zu schreiben und ich war müde. wir sehen uns.
(Wenn ich nicht gelangweilt oder beschäftigt bin) Fortsetzung: -> (Nächste URL)
Recommended Posts