我如何知道单击了哪个按钮并在我的视图中获取它的值

Posted

技术标签:

【中文标题】我如何知道单击了哪个按钮并在我的视图中获取它的值【英文标题】:How can i know which button was clicked and get its value in my view 【发布时间】:2020-03-27 06:23:34 【问题描述】:

搜索.py

 % block search %
    <form action="#" method="post">
    <div class="container">
      <br>
      <div class="dropdown">
              <button class="btn btn-secondary dropdown-toggle" type="button" name="bankname" type="submit" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                Name
              </button>
              <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                % for key , value  in data_dict.items %
                <a class="dropdown-item" value=key name="name" href="% url 'details' %"> key </a>
                % endfor %
              </div>
      </div>
      </form>
    
    %endblock%

data_dict 中的项目数并不总是相同的,因此有时它有 2 或 3 个甚至 10 个不同的名称,这导致下拉列表中有 10 个项目。 我需要在 details .html 中显示在下拉列表中单击的名称的详细信息

Views.py


    def details(request ):
        request.GET('name')
        data_dict = request.session.get("data_dict")
        context = "data_dict" : data_dict
        return render(request , "details.html", context )

我希望在我的视图的下拉列表中单击选项卡的值,以便我可以从我的 data_dict 中相应地显示详细信息

【问题讨论】:

【参考方案1】:

你在正确的轨道上。但是,我认为您尝试设置提交按钮的值时缺少一些 javascript 代码?

您应该知道,当您提交表单时,只有一个布尔值与已单击按钮的名称一起提交。因此,为了使这项工作正常工作,您需要添加多个具有不同名称的提交按钮。

按照你的例子,这样的事情应该可以工作:

<form method="POST">
  % for key, value  in data_dict.items %
    <button type="submit" name=" key ">Save</button>
  % endfor %
</form>
def my_view(request, **kwargs):
    button_clicked = None
    for key, value in data_dict.items():
        if request.POST.get(key, False):
            button_clicked = key, value
    print(button_clicked)

希望对您有所帮助,如果您还有其他问题,请告诉我。

最佳-乔

【讨论】:

感谢您的回复,但我对编程还很陌生,您能告诉我该怎么做吗 我更新了我的代码示例以更好地解决您的问题。如果这还不够,请告诉我。 GET 方法中的第二个参数是什么(假)我不明白。 button_clicked 变量会给出被点击的特定键吗? ,因为我的理解是,无论如何我都试过了,但它似乎不起作用。谢谢强硬 它没有返回 @suyashjoshi 抱歉,我相信这是因为您的表单没有使用 GET 方法而是 POST 方法。我将示例更改为 POST。回答您的问题:request.GET 或 request.POST 是排序字典。每个字典都实现了方法get,w3schools.com/python/ref_dictionary_get.asp。第二个选项参数是默认值,我想明确地设置为 False。也没有人会这样做,但这可能有点冗长。

以上是关于我如何知道单击了哪个按钮并在我的视图中获取它的值的主要内容,如果未能解决你的问题,请参考以下文章

自定义验证器如何知道单击了哪个命令按钮

如何在单击按钮时获取表格视图单元格中文本字段的值?

单击自定义按钮时如何创建视图

如何添加多个视图和删除视图并在删除后从视图中获取所有数据?

如何更改从第一个活动单击的按钮上的第二个活动的文本? [科特林]

如何在我的应用程序中获取叠加视图