Dropdown Wert an View übergeben?

Django, Flask, Bottle, WSGI, CGI…
Antworten
torsten_156
User
Beiträge: 43
Registriert: Freitag 5. April 2019, 20:10

Hallo,
ich bin relativ neu in der django Welt und versuche mich gerade daran eine Seite mit Navbar inkl. Dropdown Komponente zu erstellen.
Die Seite ist soweit fertig, die Navbar enthält auch ein Dropdown mit zwei Werten.

Ich schaffe es aktuell leider nicht den selektierten Wert des Dropdowns an eine Funktion meiner View zu übergeben.

Hier meine Dateien:

navbar2.html (Auszug)

Code: Alles auswählen

{% load static %}

<!-- Grey with black text -->
<nav class="navbar navbar-expand-sm shadow bg-light navbar-light">
    <div class="container-fluid">
      <ul class="navbar-nav">
        <li class="nav-item">
          <!--<a class="nav-link active" href="#">Home</a>-->
          <a class="navbar-brand" href="#">
            <img src="{% static 'bilder/Voyager.png'%}" alt="" style="width:180px;">
          </a>
        </li>

        <li class="nav-item dropdown" name='dropdown'>
          <a class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false" >
            Fabrik
          </a>
          <ul class="dropdown-menu" name="dropdown" >
            <li><a class="dropdown-item" value='100' href="{% url 'bapi_A100' %}">A-100</a></li>
            <li><a class="dropdown-item" value='200' href="{% url 'bapi_A100' %}">A-200</a></li>
            <!--
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="">...</a></li>
            -->
          </ul>
        </li>
View.py (Auszug)

Code: Alles auswählen

from django.shortcuts import render
import requests
import json
import pandas as pd


# Create your views here.
def bapi_A100(request):
    if request.method == "GET":
        dep = request.GET.get("dropdown")
    else:
        dep = '999'
...
Wenn ich das so ausführe, wird die Seite nach einer Auswahl im Dropdown neu aufgerufen, allerdings immer ohne den Wert des Dropdown an die Funktion zu übergeben.
Das kann ich prüfen, indem ich im if-Block den Wert für dep direkt angebe:

Code: Alles auswählen

dep = 100
Hat jemand eine Idee???

Danke und Grüße
Torsten
Benutzeravatar
noisefloor
User
Beiträge: 3863
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn du

Code: Alles auswählen

...
<li><a class="dropdown-item" value='100' href="{% url 'bapi_A100'  100%}">A-100</a></li>
schreibst würde die URL `wasauchimmer/der/url-pfad/ist/100` aufgerufen. Die Route müsstest du dann so in der Art

Code: Alles auswählen

repath('^wasauchimmer/der/url-pfad/ist/(?P<dep>[0-9]{3})/$', 'viewname', name='urlname')
schreiben und im View:

Code: Alles auswählen

def my_view(request, dep):
...
Das ist jedenfalls IMHO der gängige Weg.

Gruß, noisefloor

Gruß, noisefloor
Antworten