2017-03-17 5 views
0

Ich mache eine Django Web App, wo ich Benutzereingaben aus einem HTML-Textfeld nehmen und durch ein Python-Skript ausführen möchte. Das Skript funktioniert, wenn ich Text von der Befehlszeile aus eingabe, aber ich möchte in der Lage sein, die Web-App drucken zu lassen, was mit dem Text passiert, wenn er das Skript durchläuft.Django Help: Wie man Textdaten von der Textbox nimmt und Pythonskript durchläuft?

Ich habe bereits eine Django-Webanwendung erstellt, und wenn der Server ausgeführt wird, wird eine einfache HTML-Seite mit einem einfachen Textfeld und einer Übergabeschaltfläche angezeigt (ein Formular).

Ich habe ein separates Python-Skript geschrieben, das Benutzereingaben (über die Befehlszeile) ausführt und den über das Skript eingegebenen Text ausführt.

Wie kann ich die Eingabe() von der Funktion mit Formulardaten von der HTML-Seite ersetzen?

Ein Beispiel dafür, was ich tun möchte:

<form action=""> 
text: <input type="text" name="handle" value=""><br> 
<input type="submit" value="Submit"> 
</form> 

Die oben ist eine einfache Form mit dem Submit-Button. Wenn die Schaltfläche ‚Senden‘ gedrückt wird, möchte ich, dass die Daten an ein Skript gehen:

import statements 

def blah(): 
screenname = input('Enter your name here: ') 
output = screenname.functionA 
print(output) 

Außer dem Eingang() mit den Formulardaten aus der HTML-Datei ersetzt wird.

Wo würde ich das Python-Skript in der Django-App speichern?

Wie würde ich den Text vom Formular an das Python-Skript übergeben?

Jede Hilfe ist willkommen, ich versuche, meine Web-Design-Fähigkeiten einen Schritt zu einer Zeit :)

Antwort

2

Fangen wir mit Form zu entwickeln beginnen. Sie müssen diese Form in eine django Ansicht schreiben:

<form method="POST" action=""> 
    <inputs here ...> 
</form> 

Innerhalb der Ansicht, wo Sie diese Seite machen müssen Sie für die Methode des Antrags zu überprüfen, und wenn es eine POST Anforderung ist, dann geben sie an die Funktion.

def view_name(request): 
    if request.method == "POST": 
    screenname = request.POST.get("handle", None) # handle is the name of the input in the question. 
    # Here you can do anything with your screenname, like passing it to the function. 
    return render(request, 'path/to/form.html', {}) 

Jetzt über Ihre benutzerdefinierte Skript in Django setzen. Eine Möglichkeit ist das Hinzufügen von utils.py-Skript in Ihrer App und das Aufrufen von utils.blah(sreenname) im vorherigen Code. Auch statt print können Sie das Ergebnis und zeigen Sie es zurück:

from app_name.utils import blah 
def view_name(request): 
    if request.method == "POST": 
    screenname = request.POST.get("handle", None) 
    result = blah(screenname) 
    return render(request, 'path/to/result.html', {'result': result} 
    return render(request, 'path/to/form.html', {}) 
+0

In Bezug auf das letzte Stück Code: ist, dass alle in der Django-Ansicht? –

+0

Ja. Denken Sie als Model View Controller-Logik, Django ist Model Template View-Typ-Framework und das ist Arbeit für View –

+0

Wie würde die URLs.py für das obige Beispiel aussehen? –

Verwandte Themen