Seite 1 von 1

Dropdown Wert an View übergeben?

Verfasst: Freitag 7. Juli 2023, 13:29
von torsten_156
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

Re: Dropdown Wert an View übergeben?

Verfasst: Freitag 7. Juli 2023, 15:58
von noisefloor
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