Flask 2 request POST nützen

Django, Flask, Bottle, WSGI, CGI…
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Im Moment weiß ich gar nicht, was Du falsch machst, denn alles was zu tun ist, habe ich bereits gesagt. Ein komplett lauffähiges Beispiel, wäre jetzt ganz praktisch.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Also ich habe jetzt noch ein bisschen an dem Code rumprobiert und bin jetzt soweit das Jeder Button und die Stationenabfrage Funktioniert. Jedoch habe ich das Problem das ich jeden Button nun 2 mal drücken muss damit die Grafik wechselt. Ich denke das liegt daran da der alte Wert ja noch in last_selected gespeichert ist.
Wie kann ich jetzt dafür sorgen das auf last_selected nur dann zurückgeriffen wird wenn der andere Wert geändert wird? Also last_selected last soll nur benutzt werden wenn ich die mess_id ändere.

Code: Alles auswählen

@app.route('/dashboard/<id>', methods=['GET', 'POST'])
def dashboard(id):
    mess_id = request.form.get('mess_id', 1)
    last = request.form.get('last,', request.form.get('last_selected', 'tag'))
    plots_date = []

    if last == 'tag':
        ask_length = 96            
    elif last == 'woche':
        ask_length = 672
    elif last == 'monat':
        ask_length = 2880
    else: 
        ask_length = 96

    if 'date' in request.form:
        ask_length = 96
        start_date = request.form.get('start_date', "2018-01-01_00:00")
        end_date = request.form.get('end_date', "2019-01-01_00:00")
        plots_date = [
            make_plot(mess_id, quantity, ask_length, start_date, end_date)
            for quantity in PLOTS
        ]

    plots = [
        make_plot(mess_id, quantity, ask_length, None, None)
        for quantity in PLOTS
    ]

    return render_template('dashboard.html', form=request.form, plots=plots, plots_date=plots_date, mess_ids=['1', '2', '3'])

Code: Alles auswählen

<form method="post" >
        <div class="topnav">
          <input type="hidden" name="last_selected" value="{{form.last}}">
          <button class="button" type="submit" value="tag" id="tag" name="last">Letzter Tag</button>
          <button class="button" type="submit" value="woche" id="woche" name="last">Letzte Woche</button>
          <button class="button" type="submit" value="monat" id="monat" name="last">Letzter Monat</button>
          <div class="topnav-right">
            <select name="mess_id" onchange='this.form.submit()'>
            {%for mess_id in mess_ids%}
              <option value="{{mess_id}}" {%if mess_id == form.mess_id%}selected{%endif%}>Station {{mess_id}}</option>
            {%endfor%}  
            </select> 
          </div>
        </div>
      </form> 

      <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='css/bokeh.css') }}">  
      <script type="text/javascript" src="{{url_for('static', filename='js/bokeh.js') }}"></script> 
      {% for plot in plots %}
        {% for part in plot %}
          {{part | safe}}
        {% endfor %}
      {% endfor %}
      
      <form method="post">
        <div class="auswahl">
          <p>Zeitraum von<input class="ausw-button" type = "date" name = "start_date" />bis
          <input class="ausw-button" type = "date" name = "end_date" />
          <input class="ausw-button" type="submit" value="submit" name="date" />
        </div>
      </form>
      {% for plot in plots_date %}
        {% for part in plot %}
          {{part | safe}}
        {% endfor %}
      {% endfor %}
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Beim Programmieren kommt es halt auf jedes Komma an.

Achja, hatte ich schon erwähnt, dass POST hier die falsche Methode ist?
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Falls du diese Zeile meinst was ist dann richtig ich habe es mit get probiert dann geht es aber nicht mehr.

Code: Alles auswählen

<form method="post" >
Ist das mit dem Komma eine Berkung das mir nur ein Komma fehlt oder zu viel ist um mein Problem zu beheben?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Natürlich geht das mit GET genauso. Und ja, es ist ein Komma zu viel.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Also ich habe es extra davor noch mal ausprobiert bevor ich das hier geschrieben habe und es geht nicht mit einem GET außer ich müsste dafür wo anders auch noch etwas ändern.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Habe jetzt in der Zeile das Komma entfernt und es funktioniert alles (immernoch mit der POST methode).
Das einzige Problem was ich jetzt noch habe ist das die Graphen immer zufällig geordnet sind. Hat da jemand eine Idee wie ich die in eine Festgelegte Reihenfolge bringen kann?
Antworten