2017-06-15 2 views
0

Die App lädt die "links_submit.html", die ein Feld enthält, wo Sie einen Link schreiben können, wie zum Beispiel (www.google.com) und Sie senden, dann erhält die App diese URL als HTTP-Post und Weiterleiten auf eine andere Seite "post_response.html", die einen einfachen HTML-Code für das Feedback mit dem Wort "Ok" enthält. Dann möchte ich einen Prozess mit diesem Link (Google crawlen und nach einer bestimmten Sache suchen) und nach Abschluss dieses Prozesses automatisch von der "post_reponse.html" auf eine andere Seite umleiten, um die Ergebnisse anzuzeigen, die ich aus Google extrahiert habe. Jetzt bin ich nicht sicher, wie meine app auf Kolben sagen: „Ok lässt nun eine normale Funktion (nicht Strecke) wie zum Beispiel:Wie man eine normale Funktionen in Python-Kolben ohne eine Route und die Ergebnisse dieses Prozesses über eine Route zurückgeben?

def loadpage(link_sent_by_the_http post): 
    res = requests.get('www.google.com') 

Stellen Sie sich vor, dass nach Belastung der Seite, die ich auch einige HTML-Tag extrahieren auf Google und nach diesem Prozess möchte ich die Seite "post_respose.html" mit der "ok" auf eine neue HTML-Seite umleiten, die das HTML-Tag aus Google extrahiert enthält. Bitte beachten Sie, dass ich weiß, wie Sie die Seite Google laden und was extrahieren Ich will, aber ich weiß nicht, wie diese Funktion/Prozess in der Mitte von Flask einfügen und dann von einem normalen HTML mit "ok" für eine neue Route umleiten mit den Ergebnissen, die ich extrahiert habe.

import requests 
from flask import Flask, render_template, request, url_for 

app = Flask(__name__) 

@app.route('/test') 
def form(): 
    return render_template('links_submit.html') 

@app.route('/links/', methods=['POST']) 
def links(): 
    links=request.form['links'] 
    return render_template('post_response.html') 

Intern Process (Load the received link > Extract what I want) 
and then redirect the "post_response.html" to another "html" which will 
contain the results that I have extracted) 

if __name__ == '__main__': 
    app.run(debug=True) 
+0

Dies kann nicht mit Kolben allein getan werden. Sie benötigen JavaScript, um lange Abfragen zu implementieren oder serverseitige Ereignisse oder Websockets einzurichten. –

Antwort

1

Zwei Möglichkeiten it-

erstellen python Datei sagen webfunctions.py und legen Sie Ihre Funktion in dieser Datei zu tun. z.B. -

def inc(x): 
    return int(x) + 1 

Jetzt in Ihrem flask App-Datei können Sie die gesamte Datei importieren oder einfach nur die funktions-

from webfunctions import inc 

@app.route('/whatsnext/', methods=['POST']) 
def waiting(): 
    curVal=request.form['x'] 
    nextVal = inc(curVal) 
    return render_template('post_response.html', nextVal=nextVal) 

oder sonst können Sie Ihre Definitionen an der Spitze Ihrer Kolben App-Datei deklarieren. Wie unten -

import requests 
from flask import Flask, render_template, request, url_for 

def inc(x): 
    return int(x) + 1 


@app.route('/whatsnext/', methods=['POST']) 
def waiting(): 
    curVal=request.form['x'] 
    nextVal = inc(curVal) 
    return render_template('post_response.html', nextVal=nextVal) 
+0

Danke für deine Antwort PEJK. Ich werde es zu Hause versuchen, aber selbst das ist immer noch ein Problem, denn nachdem ich die Links gepostet habe, möchte ich den HTML "post_reponse.html" laden, der ein einfaches "ok" als Feedback hat, dass die Links gepostet wurden und dann nach dem Laden eine neue Seite mit den Ergebnissen des Prozesses eine neue "results.html". Wie kann ich andere HTML aufrufen, ohne eine Taste drücken zu müssen, wird "Ok" angezeigt und wenn der Vorgang abgeschlossen ist, wird automatisch zu neuen HTML mit den Ergebnissen umgeleitet. Das Beispiel, das Sie mir schicken, sendet das OK und die Ergebnisse auf der gleichen Seite, aber ich möchte das "OK" zuerst und nach dem resu schicken – Pablo

+0

Seltsamerweise erkläre ich meine Funktionen nach dem Erklären der Route und es funktioniert immer noch gut. In diesem zweiten Beispiel deklariere ich 'def inc (x)' nach '@ app.route ('/ whatsnext /', Methoden = ['POST'])' und python wirft keine Fehler. – addicted

Verwandte Themen