2016-07-14 8 views
0

Ziemlich neu zu Flasche. Ich weiß nicht, wie es richtig funktioniert. Was ich versuche, ist jedoch dryscrape-Modul Ich versuche, eine Webseite abzufragen. Mit Kolben für mein eigenes Frontend. Ich habe jedoch Probleme bei der Übergabe meiner Abfragezeichenfolge. Also was ich versuche zu tun ist.Kolben, der die Abfragezeichenkette eingibt

@app.route("/", methods=['GET', 'POST']) 
def getIndex(): 
    query = request.form.get('query') 
    return render_template('index.html',query=query),query 

mit der „Abfrage“ Ich mag diese

@app.route("/search_info") 
def search_info(): 
    string = getIndex()[1] ***# Here I'm having the issue. I'm trying to get the query string here and follow the proccess.*** 
    print string 
    sess = dryscrape.Session(base_url='http://www.watchfreemovies.ch/') 
    sleep(4) 
    sess.visit('/') 
    search_index = sess.at_xpath('//*[@name="search_keywords"]') 
    search_index.set(string) 
    sleep(4) 
    sess.render('inputz.png') 
    search_index.form().submit() 

Wie kommentierte mit diesem in meine anderen Funktionen fortsetzen will. Ich versuche, meine Abfrage-Zeichenfolge in meine neue Funktion zu übergeben und dryscrape zu verwenden, um den Rest des Zeugs zu tun. Aber ich mache etwas falsch. Es funktioniert nicht. Brauche Hilfe!

+0

Auschecken [variable Regeln] (http://flask.pooco.org/docs/0.11/quickstart/#variable-rules) – alexpeits

+0

'request.form' liest aus dem Post-Text. 'request.args' liest aus der Abfragezeichenfolge. – dirn

Antwort

0

Damit die Abfragezeichenfolge über Anforderungen hinweg verfügbar ist, müssen Sie sie entweder auf der Clientseite oder auf der Serverseite speichern. Flask-Session wird dies für Sie auf der Serverseite behandeln und ist wahrscheinlich die einfachste Lösung. Sie benötigen einen Speicherort für die Sitzungsdaten. Dafür gibt es verschiedene Optionen, einschließlich des Dateisystems.

Beispiel:

from flask import Flask, session 
from flask.ext.session import Session 

app = Flask(__name__) 
# Check Configuration section for more details 
SESSION_TYPE = 'filesystem' 
app.config.from_object(__name__) 
Session(app) 

@app.route("/", methods=['GET', 'POST']) 
def getIndex(): 
    query = request.form.get('query') 
    session['query'] = query 
    return render_template('index.html',query=query),query 

@app.route("/search_info") 
def search_info(): 
    query = session.get('query') 
    print query 
    ... 
0

Ihr Konzept der HTTP-Anforderung und reagieren, ist nicht klar. Lassen Sie mich einen Anwendungsfall zur Erklärung annehmen.

  1. Wenn Sie your.domain/search_info anfordern, wird Kolben search_info() Funktion

  2. laufen Und dann Kolben wird eine andere Funktion getIndex() in search_info() Linie 1 string = getIndex()[1]

  3. Basierend auf string = getIndex()[1] ausführen, werden Kolben eine GET senden Abfrage an your.domain/, und führen getIndex()

  4. flask fragt NOTHING ab, wenn die GET-Abfrage gesendet wurde.

  5. Weil request.form.get('query') nichts bekommen wird. Wenn Sie print query, erhalten Sie None Wert. (Was dazu führen kann ernstes Problem)


Um Ihren Code ein korrektes Verhalten haben, sollten Sie another fake function gefälschte GET-Abfrage senden machen.

@app.route("/", methods=['GET', 'POST']) 
def getIndex(): 
    query = request.form.get('query') 
    return render_template('index.html',query=query) 

@app.route("/<fake_query>") 
def _getIndex(fake_query): 
    query = fake_query 
    return query 

@app.route("/search_info") 
def search_info(): 
    fake_query = 'whatever' 
    string = _getIndex(fake_query) 
    print string 
    ... 

Über @ ist Naishy Lösung

Ja oder Nein

Session ein gemeinsamer Weg, dieses Problem zu lösen, nur, wenn Sie abgefragt haben. Aber ich sah keine Beschreibung davon.

Da Ihre Beschreibung nicht abgeschlossen ist, wenn Session Ihr Problem lösen kann, werde ich diese Antwort löschen.