【问题标题】:I am trying to get the index value of the list item selected我正在尝试获取所选列表项的索引值
【发布时间】:2020-03-17 12:29:03
【问题描述】:

search.py​​


    <div class="container">
      <br>
      <div class="dropdown">
              <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                Names
              </button>
              <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                {% for items in name %}
                <a class="dropdown-item" href="{% url 'details' %}">{{ items }}</a>
                {% endfor %}
              </div> 
      </div>

 

name 是一个变化的列表,它可以有 2 或 3 或 n 个项目,所以我使用了一个 for 循环来显示下拉列表中的所有项目。现在我要做的是获取下拉项点击。 例如,我单击下拉列表的第三项,我想将索引 2 传递给我的 views.py,因此当它重定向到 url “details.html”时,网页上显示的数据将从列表中提取我想根据索引传递下拉菜单中点击的项目的索引。

views.py

    def details(request ):
        name = request.session.get("name")
        data = request.session.get("data")
        txns = data["drop-downindex"]["txns"]
        context ={"txns":txns ,"name1":name1}
        return render(request , "details.html", context )

会话是我用来存储数据的,我基本上是在另一个函数中创建一个 API,并将 json 数据存储在数据变量中,这是一个列表 1)数据列表包含各种名称的txns详细信息(下拉) 因此,当我单击下拉列表的第二项时,索引 1 应该进入我的数据列表并获取列表项 2 或索引 1 的 txns

【问题讨论】:

  • 您可以显示您的详细信息视图吗? index=2 是否与 items.pk 相同?通常,我们将使用 "{% url 'details' pk=item.pk %}" 将变量传递给视图,在视图中,您可能会有类似 def details(request, pk) 的内容。顺便说一句,您可能想使用item 而不是items
  • @ha-neul 我已经按照您的说法编辑了帖子,现在您可以找到详细信息视图。我不明白您所说的 pk =item.pk 是什么意思。我会使用项目,但我认为我没有任何区别。谢谢

标签: python html django forms list


【解决方案1】:

使用枚举方法可以在列表中创建索引值。

name =['a','b','c','d','e']
for key,value in enumerate(name):
      print(key , value)

输出:

         1 a
         2 b
         3 c
         4 d
         5 e

【讨论】:

  • 这不是 OP 的要求
【解决方案2】:

更改您的网址,使其接受索引参数。类似的东西

url( r'^details/(?P<index>\d+)/$', myview, name='detail' )

更改您的视图以接受索引参数

更改您的模板以将索引参数传递给url

 <a class="dropdown-item" href="{% url 'details' index=index %}">{{ items }}</a>

我不清楚索引参数的来源,但它会在你的视图上下文中。规范示例是一个接受对象 id 的详细视图,通过在模板中迭代查询集获得:

... href="{% url 'details' id=object.id %}"

如果 name 是一个列表,您将 name=enumerate(name) 传递给您的模板,而 for 循环将为 {% for index,items in name %}

【讨论】:

  • 所有的下拉项都是a-tab下拉项的数量等于名称列表中的项数,名称列表中的项数每次都不同,所以下拉菜单中的项目数我需要一种方法来告诉我的视图,一旦我通过或接收视图中的索引,我将提取第三或第四个项目或任何已单击的项目索引使用我从 search.py​​ 或下拉索引中获得的索引号从 txns 列表中获取数据,并相应地在详细信息中显示输出。 html
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2013-05-17
  • 2023-03-15
相关资源
最近更新 更多