2016-06-10 3 views
1

Dies ist eher eine Frage darüber, wo zu finden, wie ich dies tun würde, anstatt zu fragen, wie dies zu tun ist. Ich bin mir sicher, dass dies gut abgedeckt ist, ich habe nur Mühe, den richtigen Begriff zu artikulieren, den ich für Google verwenden könnte und finde die Antwort heraus.Python Flask - Verarbeitung Eingang von Front-End im Back-End

Wie auch immer - ich habe eine Python Flask Web-Anwendung. Auf einer Webseite gibt es ein Eingabefeld, das Benutzereingaben anfordert. Was ich gerne machen würde, ist, dass etwas Magie mit den Benutzereingaben im Hintergrund passiert. In meinem eigenen Szenario möchte ich eine URL nehmen, dann benutze bs4, um das auszuwählen, was ich brauche, und dies auf der Webseite anzuzeigen.

Der Einfachheit halber werde ich nach etwas Einfachem fragen und kann es dann von dort aus aufbauen: Wenn ich den Benutzer bitten sollte, eine Nummer anzugeben, dann drücke 'Submit', wie kann ich die Zahl mit 10 multiplizieren ?

Wenn mein Code für das Formular index.html war:

<form class="form-horizontal" role="form" method="post" action="/"> 
    {{ form.csrf_token }} 
     <fieldset> 
      <div class="form-group"> 
       <label for="GetNum" class="col-lg-2 control-label">Enter Number</label> 
        <div class="col-lg-6"> 
         <input type="text" id="GetNum" name="GetNum" class="form-control" value=""> 
        </div> 
       <input class="btn btn-success" type="submit" value="Calculate"> 
      </div> 
     </fieldset> 
</form> 

Ich bemerkte, dass ich die Eingabe auf einen Absatz von <p>form.request.GetNum</p> zu drucken zu bekommen.

import math 
GetNum = 10 #should be form.request.GetNum value 
CalcResult = GetNum*1000 
print CalcResult # or {{ CalcResult.data }} or something in index.html 

Mein Controller (app.py) sieht so aus::

@app.route('/', methods=['GET', 'POST']) 
@login_required 
    def home(): 
    error = None 
    form = PostForm(request.form) # unrelated to question, but will this clash? 
    if .. : 
     do something 
     return redirect(..) 
    else: 
     do something else.. 
     return render_template(..)  

Meine Sorge ist, dass die home Funktion endet

nun für dieses Beispiel der Frage, wird der Code für die Back-End-Funktionalität sein mit einer Masse von Code, wenn ich die mathematische Funktion dort setzen muss. Also tl; dr, wie würde ich eine Backend-Funktion in meinem Code implementieren? (oder bitte geben Sie mir Material zum Lesen, danke!)

Eine andere Sache ist, ich habe bereits ein Formular auf meiner '/' Seite, werde ich die Formulare wie Form1 Form2 umbenennen müssen, weil sie kollidieren oder werden es ist in Ordnung?

Antwort

0

Anderswo in Ihrer Codebasis, entweder in der gleichen Datei, oder eher ein Modul oder Paket können Sie diese komplizierte Aufgabe definieren. Läßt ein einfaches Modul complicated.py im selben Verzeichnis wie die anderen Code erstellen, die dann die komplizierte Aufgabe definiert:

def do_really_complicated_thing(info): 
    # lots of complicated steps 
    return really_complicated_data 

Dann in unserem Code anzeigen, können wir das nur eingebettet verwenden, anstelle von:

Also, kurz gesagt - die Begriffe, die Sie suchen, ist Pakete und Module, sie helfen Ihren Code besser und wiederverwendbar sein.

Bei widersprüchlichen Formularen können Sie das Formular gezielt an eine bestimmte Route senden, die nur dieses Formular behandelt. Dies ist viel sauberer, als dann verschiedene Formulare in einer einzigen Route validieren/analysieren zu müssen.

+0

Vielen Dank :) – Stuart23

Verwandte Themen