[CGI] Führen Sie das Server-Python-Programm mit Vue.js + axios aus und rufen Sie die Ausgabedaten ab

Einführung

Ich kann alles mit dem Frontend machen, aber ich wollte den Spaß von Python im Berechnungsteil, also habe ich CGI berührt, das das Programm dynamisch auf dem Server ausführt, also habe ich es zusammengefasst. Das hintere Ende ist noch spärlich.

Ich habe ein XREA-Konto auf einem kostenlosen Mietserver, also werde ich es dort tatsächlich ausprobieren. Hochleistungsfähiger, qualitativ hochwertiger Mietserver, der kostenlos verwendet werden kann | XREA

Was ich tun möchte ist

  1. Klicken Sie auf die Schaltfläche
  2. Übergeben Sie Daten mit Vue.js und axios an den Server
  3. Führen Sie das in Python geschriebene CGI-Skript aus, führen Sie die Berechnung durch und geben Sie das Ergebnis in JSON zurück
  4. Zeigen Sie die zurückgegebenen Daten auf demselben Bildschirm an

Korrekt.

Dieses Mal erstellen wir als Beispiel ein Programm, das die maximalen und minimalen gemeinsamen Vielfachen der beiden Eingangszahlen berechnet und zurückgibt.

Versuchen Sie zu machen

Dateipositionierung

├─ cgi-bin
│    └─ index.cgi
├─ index.html
└─ main.js

In Python geschriebene CGI-Skripte erstellen ein Verzeichnis namens "cgi-bin" und legen es darin ab. Geschrieben in Python, aber mit der Erweiterung .cgi.

Nach dem Hochladen auf den Server müssen Sie die Berechtigungen für CGI angeben, die später beschrieben werden.

HTML (index.html)

<html>
<head>
    <meta charset="UTF-8">
    <title>Gibt maximale und minimale gemeinsame Vielfache zurück</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js"></script>
    <script type="module" src="main.js"></script>
</head>
<body>
    <div id="app">
        <!--Eingabeteil-->
        <p>
            <input v-model="a" type="number" value="12">
            <input v-model="b" type="number" value="15">
            <button v-on:click="getResult">Berechnung</button>
        </p>
        <!--Teil anzeigen-->
        <p>
Maximales Engagement: {{ result['gcd'] }}<br>
Minimales gemeinsames Vielfaches: {{ result['lcm'] }}
        </p>
    </div>
</body>
</html>

Laden Sie Vue.js und Axios mit CDN. Wenn Sie eine in Vue geschriebene JavaScript-Datei mit "type =" module "laden, wird sie nach dem Laden des DOM ausgeführt, sodass Sie sicher sein können.

JavaScript (main.js)

var vm = new Vue({
    el: '#app',
    data: {
        a: 12,
        b: 15,
        result: {},  //Variable zum Speichern des zurückgegebenen Objekts
    },
    methods: {
        getResult: function() {
            const url = './cgi-bin/';
            //Datenübertragung mit Axios
            axios.get(url, {
                params: {  //Geben Sie Parameter mit params an
                    a: this.a,
                    b: this.b
                }
            })
            .then(res => this.result = res.data)  //Daten im Ergebnis speichern
        }
    }
});

Erstellen Sie eine Vue-Instanz und übergeben Sie Daten mit axios. Die URL lautet ". / Cgi-bin /". Wenn der Name "index.cgi" lautet, müssen Sie den Dateinamen nicht wie HTML angeben.

Außerdem können die zurückgegebenen Daten "res.data" als Objekt abgerufen werden, sodass sie nicht mit "JSON.parse ()" behoben werden mussten. (Da ich es als JSON zurückgegeben habe, war ich überzeugt, dass es als JSON-Zeichenfolge zurückgegeben werden würde.) Ich bekomme übrigens diesen Fehler.

SyntaxError: Unexpected token o in JSON at position 1

Wenn Sie sich fragen, was "o" ist, scheint es "o" von "Objekt" zu sein ...

Python CGI (index.cgi)

#!/usr/local/bin/python3
# -*- coding: UTF-8 -*-
import cgi
import cgitb
import math
import json

cgitb.enable()  #Aktivieren Sie das CGI-Debugging

form = cgi.FieldStorage()  #Speichern Sie die von GET erhaltenen Daten
a = int(form['a'].value)   #Da die Daten als Zeichenfolge vorliegen, konvertieren Sie sie in einen numerischen Wert
b = int(form['b'].value)

data = {
    'gcd': math.gcd(a, b),  # math.gcd()Ist Python 3.Anscheinend in 5 hinzugefügt
    'lcm': a * b // math.gcd(a, b)
}

print('Content-Type: application/json')
print()
print(json.dumps(data))  #Rückkehr im JSON-Format

Geben Sie die Position des Python-Interpreters am Zeilenanfang an. Ich denke, dass der CGI-Ausführungspfad für jede Sprache auf der Spezifikationsseite des Mietservers geschrieben ist. Überprüfen Sie ihn daher. XREA ist da. xrea_py_path.png

Context-Type Das print () nach der angegebenen Zeile steht für einen Zeilenumbruch und scheint eine nutzlose Spezifikation zu sein, sofern diese nicht eingefügt wird. Normalerweise können Sie "\ n" am Ende der Zeichenfolge "Context-Type" einfügen.

Nach dem Hochladen müssen Sie die Berechtigungen des Verzeichnisses angeben, das das CGI-Skript und seine Dateien enthält. XREA hat außerdem Berechtigungen empfohlen. xrea_permission.png Beachten Sie insbesondere, dass die ausführbare CGI-Datei mindestens 700 (ausführbar) sein muss (ich habe es oft vergessen).

Ich werde auch einen Link zu den oben genannten XREA-Spezifikationen veröffentlichen. Spezifikation|Hochleistungsfähiger, hochwertiger Mietserver, der kostenlos genutzt werden kann|XREA

Lauf

Hier ist der Bildschirm, auf dem ich die Datei angehoben und tatsächlich ausprobiert habe xrea_cgi_disp.png gutes Gefühl. Wenn Sie es leer oder in kleinen Zahlen senden, wird normalerweise eine Fehlermeldung angezeigt, es handelt sich jedoch um eine Testversion.

das ist alles.

Recommended Posts

[CGI] Führen Sie das Server-Python-Programm mit Vue.js + axios aus und rufen Sie die Ausgabedaten ab
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Ermitteln Sie mit Selenium + PhantomJS + Python die Breite des Div auf der Serverseite
Bis Python mit Pythonbrew installiert ist und Flask auf dem WSGI-Server ausgeführt wird
Erhalten Sie Kommentare auf Youtube Live mit [Python] und [Pytchat]!
Führen Sie in Python geschriebenes CGI auf Sakuras Mietserver aus
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Installieren Sie django auf Python + Anaconda und starten Sie den Server
Holen Sie sich Youtube-Daten mit Python
Führen Sie Pythons CGI auf CORESERVER aus
Greifen Sie mit python27 / pyodbc auf dem Container auf den SQL Server des Hosts zu
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Systemhandel ab Python3: Holen Sie sich den neuesten Programmcode
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Holen Sie sich die passende Zeichenfolge in den regulären Ausdruck und verwenden Sie sie beim Ersetzen unter Python3 erneut
Führen Sie das Programm aus, ohne eine Python-Umgebung zu erstellen! !! (Erste Schritte mit Google Colaboratory)
Wie ist der Fortschritt? Lassen Sie uns mit dem Boom in Python weitermachen
Führen Sie den Ausgabecode auf dem lokalen Webserver in Python als "A, gibt vor, B zu sein" aus
Erste Schritte mit dem Python-Framework Django unter Mac OS X.
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
[Python] Mit DataReader Wirtschaftsdaten abrufen
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
[In-Database Python Analysis-Lernprogramm mit SQL Server 2017] Schritt 3: Erkunden und Visualisieren von Daten
[Persönliches Memo] Holen Sie sich Daten im Web und machen Sie daraus einen DataFrame
Senden und Empfangen von Bilddaten als JSON in Python über das Netzwerk
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python
Stellen Sie das in Python unter SQL Server erstellte Vorhersagemodell bereit und verwenden Sie es
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Lesen Sie die Datei mit Python und löschen Sie die Zeilenumbrüche [Hinweise zum Lesen der Datei]
Senden und Empfangen von Binärdaten über serielle Kommunikation mit Python3 (auf Mac)
Erhalten und schätzen Sie die Form des Kopfes mit Dlib und OpenCV mit Python
Vergleichen Sie die nächtliche Rendite und die tagsüber stattfindende Rendite des durchschnittlichen Aktienkurses von Nikkei mit Python
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
Installieren Sie Python3 und Django unter Amazon Linux (EC2) und führen Sie den Webserver aus
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Datenpipeline-Aufbau mit Python und Luigi
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
[Python] Ruft den Variablennamen mit str ab
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen Sie einen CGI-Server, der unter Python 3 in Docker ausgeführt wird
Laden Sie mit Python Dateien im Web herunter
Führen Sie den Python-WSGI-Server auf der NGINX-Einheit aus
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
So starten Sie das Python-Projekt im Jahr 2020 (Windows WSL und Mac Common)
Machen Sie aus einem Python-Programm einen Daemon und führen Sie es automatisch aus, wenn das Betriebssystem gestartet wird
Führen Sie Raw SQL mit Redash unter Verwendung der Python-Datenquelle aus und zeigen Sie das Ergebnis an
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Klicken Sie auf das Python / Matplotlib-Diagramm, um Koordinatenwerte oder Tastatureingabewerte abzurufen
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Führen Sie regelmäßig Python-Programme auf AWS Lambda aus
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Installieren Sie Python3.5 + NumPy + SciPy und führen Sie es unter Windows 10 aus
Zeichentipps mit matplotlib auf der Serverseite