我如何知道单击了哪个按钮并在我的视图中获取它的值
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。也没有人会这样做,但这可能有点冗长。以上是关于我如何知道单击了哪个按钮并在我的视图中获取它的值的主要内容,如果未能解决你的问题,请参考以下文章