Ich möchte eine Webanwendung mit React und Python Flask erstellen

Einführung

Seit ich bei der Arbeit von React an der Frontentwicklung beteiligt bin, habe ich eine einfache Webanwendung erstellt, die auch als Ausgabepraxis dient.

Ich hatte keine Ahnung, welche Art von App ich erstellen sollte, also verwendete ich das Freigabeskript mecab, das ich zur Hand hatte, und erhielt den Eingabetext an der Rezeption. Es ist eine sehr einfache Anwendung, die die Daten auf der Serverseite aufteilt und das Ergebnis an der Rezeption anzeigt. (Da der Hauptzweck darin bestand, den Teil zu untersuchen, der die Reaktion und den Kolben verbindet, bin ich mir nicht sicher, ob das Erscheinungsbild und die Funktionen der App überhaupt nicht erstellt wurden.)

Wie der Titel schon sagt, ist die Vorderseite mit React und die Serverseite mit Python Flask implementiert.

Das diesmal implementierte Skript ist unter [hier] verfügbar (https://github.com/Pu-of-Parari/jparser_app).

Fertiges Produkt

Bildschirm app_top.png

Ich werde versuchen zu teilen app_res.png

Montageumgebung

OS: Ubuntu 18.04.2 LTS
Python: 3.6
flask==1.0.2

npm: 6.14.7

Ich werde diesmal nicht auf die Umgebungskonstruktion von React eingehen, aber das offizielle Tutorial ist auch auf Japanisch umfangreich und es war sehr hilfreich.

Dies ist auch sehr zu empfehlen.

Implementieren

Diagramm

Die Konfiguration der diesmal implementierten Anwendung ist wie folgt (nur der Hauptteil).

app_architect.png

Serverseite

Die Serverseite hat die folgende Konfiguration.

backend/
   ├─ requirements.txt
   ├─ server.py
   └─ utils.py

server.py ist der Code, der den Flask-Server startet.

Die Adresse und der Port werden unten mit "app.run (host =" 127.0.0.1 ", port = 5000)" angegeben.

server.py


from flask import Flask
from flask import request, make_response, jsonify
from flask_cors import CORS
from utils import wakati

app = Flask(__name__, static_folder="./build/static", template_folder="./build")
CORS(app) #Cross Origin Resource Sharing

@app.route("/", methods=['GET'])
def index():
    return "text parser:)"

@app.route("/wakati", methods=['GET','POST'])
def parse():
    #print(request.get_json()) # -> {'post_text': 'Test Test Test'}
    data = request.get_json()
    text = data['post_text']

    res = wakati(text)
    response = {'result': res}
    #print(response)
    return make_response(jsonify(response))

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

Der Teil @ app.route (" / wakati ", Methods = ['GET', 'POST') empfängt den Text von vorne, teilt ihn und gibt ihn dann nach vorne zurück. Ruft den von data = request.get_json () von vorne geposteten Inhalt im json-Format ab. Nehmen Sie die erforderlichen Daten von hier, führen Sie eine Verarbeitung durch (wenden Sie sie auf eine Funktion an, fügen Sie sie in die Datenbank ein), erstellen Sie sie im JSON-Format wie "response = {'result': res}" und geben Sie sie an die Vorderseite zurück.

(Ergänzung: Was ist CORS) Diese Regel ist erforderlich, um den Zugriff auf eine andere Ressource zu ermöglichen (= standortübergreifende HTTP-Anforderung). Ohne dies können Sie nicht auf den von der Vorderseite gestarteten Kolbenserver zugreifen.

Vorderseite

Dieses Mal habe ich die Vorlage "create-react-app" verwendet. (Hier ist sehr einfach zu verstehen, wie die App create-react-app eingerichtet und verwendet wird!)

Die Vorderseite hat die folgende Struktur (nur die Hauptdateien werden aufgelistet).

frontend/app/
   ├─ node_modules/
   ├─ public/
   ├─ src/
   |   ├─ App.css
   |   ├─ App.js
   |   ├─ index.js
   |   └─ ...
   └─ ...

Die App.js in der automatisch generierten Vorlage wurde wie folgt umgeschrieben.

App.js


import React from 'react';
import './App.css';
import Axios from 'axios';

//function App() {
export class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {value: ''};

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <h1>text parser</h1>
          <form onSubmit={this.handleSubmit}>
            <label>
              <textarea name="text" cols="80" rows="4" value={this.state.value} onChange={this.handleChange} />
            </label>
            <br/>
            <input type="submit" value="Parse" />
          </form>
        </header>
      </div>
    );
  }


  wakati = text => {
    //console.log("input text >>"+text)
    Axios.post('http://127.0.0.1:5000/wakati', {
      post_text: text
    }).then(function(res) {
      alert(res.data.result);
    })
  };

  handleSubmit = event => {
    this.wakati(this.state.value)
    event.preventDefault();
  };

  handleChange = event => {
    this.setState({ value: event.target.value });
  };
}

export default App;

Die folgenden Teile davon werden zur Kommunikation mit der Serverseite verwendet.

  wakati = text => {
    //console.log("input text >>"+text)
    Axios.post('http://127.0.0.1:5000/wakati', {
      post_text: text
    }).then(function(res) {
      alert(res.data.result);
    })
  };

Veröffentlichen Sie den Wert von "this.state.value" in "http: //127.0.0.1: 5000 / wakati", der in "server.py" eingerichtet wurde. Nach der Verarbeitung auf der Serverseite wird der zurückgegebene Wert "result" im Browser durch "alert (res.data.result)" angezeigt.

Bewegung

Starten Sie ein Terminal für das Front-End bzw. das Back-End und führen Sie die folgenden Befehle aus.

Serverseite

$ cd backend
$ python server.py

Vorderseite

$ cd frontend/app
$ yarn start

Sie können die App verwenden, indem Sie über Ihren Browser auf localhost: 3000 zugreifen (sie startet automatisch mit dem Garnstart).

abschließend

Dieses Mal habe ich eine einfache Webanwendung mit React und Python Flask implementiert. Es ist einfach, aber großartig, weil Sie eine Webanwendung in kurzer Zeit problemlos implementieren können.

Da ich im Fronttraining bin, bin ich mir über das Aussehen und die Funktionen immer noch nicht sicher, daher würde ich mich über Ihre Meinungen und Ratschläge freuen. Vielen Dank für das Lesen bis zum Ende!

Recommended Posts

Ich möchte eine Webanwendung mit React und Python Flask erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich möchte ein Spiel mit Python machen
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Erstellen einer Webanwendung mit Flask ②
Erstellen einer Webanwendung mit Flask ①
Erstellen einer Webanwendung mit Flask ③
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich möchte eine Python-Umgebung erstellen
Ich habe eine Web-API erstellt
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich möchte eine Karaoke-Klangquelle erstellen, indem ich Instrumente und Gesang mit Python trenne
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich habe versucht, Web-Scraping mit Python und Selen
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich möchte mit Python ein Fenster erstellen
Ich möchte mit Python eine E-Mail von Google Mail senden.
Erstellen Sie eine Webmap mit Python und GDAL
Schritte zum Entwickeln einer Webanwendung in Python
[Streamlit] Ich hasse JavaScript, deshalb erstelle ich eine Webanwendung nur mit Python
Ich möchte C ++ - Code aus Python-Code erstellen!
Starten Sie einen Webserver mit Bottle and Flask (ich habe auch versucht, Apache zu verwenden)
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich möchte mit Python in eine Datei schreiben
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Lassen Sie uns mit Flask eine Webanwendung zur Konvertierung von A nach B erstellen! Von Grund auf neu ...
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich möchte ein Programm ausführen und verteilen, das die Größe von Bildern in Python3 + Pyinstaller ändert
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Ich möchte eine WEB-Anwendung mit den Daten von League of Legends ① erstellen
Erstellen Sie eine Web-App, die PDF mit Flask und PyPDF2 in Text konvertiert
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte die Optimierung mit Python und CPlex behandeln
Analysieren und visualisieren Sie JSON (Webanwendung ⑤ mit Python + Flask)
Ich möchte mit einem Roboter in Python arbeiten.
So erstellen Sie ein Python-Paket mit VS Code
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich möchte einen Quantencomputer mit Python betreiben
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
Wenn Sie eine Windows-App (exe) erstellen möchten, die jetzt nur mit Python verwendet werden kann
[Python] Ich möchte mit Flask ein statisches Verzeichnis hinzufügen. [Ich möchte etwas anderes als statisch verwenden.]
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Versuchen Sie es mit GUI, PyQt in Python
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
[Python] Ich möchte einen gemeinsamen Satz zwischen numpy erhalten