如何使用 Django 访问模态中的索引值
How to access the index values in modal using Django
我正在尝试访问模态中数据框的值,但问题是我只能访问模态中的第一个索引值。如果我单击第二个或第三个索引的模式,我将获得第一个索引的值。
这是我的代码
def form(request):
#return HttpResponse("form")
#x = sol_one()
#file = pd.read_csv('C:/Users/yassa/djangoProjects/first_demo_project/PythonExport.csv')
#z=file.to_html()
if request.method == "POST":
num1 = request.POST["num1"]
#num2 = request.POST["num2"]
res,destinations = bigdata(num1)
soup = BeautifulSoup(res.to_html(), "html.parser")
soup.find("thead").find('tr').append(BeautifulSoup('<td>Next Result</td>', 'html.parser'))
for i in soup.find("tbody").find_all('tr'):
temp = i.find('th').text
i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal">Open Modal</button><div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p></p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>', 'html.parser'))
#i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal">Open Modal</button><div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p>'+str(destinations[int(temp)])+'</p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>
i.find('th')[7].find('p')str(destinations[int(temp)])
print(destinations[int(temp)])
#return HttpResponse({"res":res},file.to_html())
#return HttpResponse(res.to_html())
#return HttpResponse(soup)
return checking(request,soup)
#return render(request,"checking.html",{'res':res})
else:
return render(request,"form.html")
尽管在单击模式时所有值都在控制台上正确显示,但它在所有可单击模式上重复第一个索引的值。
这是截图。
您正在添加多个具有相同 ID (#MyModal) 的模态框,因此当单击按钮时,将打开第一个 ID 为 MyModal 的模态框,其中包含第一个索引的数据。
一个快速解决方法是使用迭代器并为每个模态分配一个唯一的 ID,如下所示:
modal_identifier = 0
for i in soup.find("tbody").find_all('tr'):
temp = i.find('th').text
i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal'+ modal_identifier +'">Open Modal</button><div class="modal fade" id="myModal'+ modal_identifier +'" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p></p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>', 'html.parser'))
#i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal'+ modal_identifier +'">Open Modal</button><div class="modal fade" id="myModal'+ modal_identifier +'" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p>'+str(destinations[int(temp)])+'</p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>
i.find('th')[7].find('p')str(destinations[int(temp)])
print(destinations[int(temp)])
modal_identifier += 1
您也可以考虑添加 1 个模态框,然后使用 Javascript 为模态框填充正确的数据。
你们模态框的id都一样。尝试以下操作:
def form(request):
#return HttpResponse("form")
#x = sol_one()
#file = pd.read_csv('C:/Users/yassa/djangoProjects/first_demo_project/PythonExport.csv')
#z=file.to_html()
if request.method == "POST":
num1 = request.POST["num1"]
#num2 = request.POST["num2"]
res,destinations = bigdata(num1)
soup = BeautifulSoup(res.to_html(), "html.parser")
soup.find("thead").find('tr').append(BeautifulSoup('<td>Next Result</td>', 'html.parser'))
cnt = 0
for i in soup.find("tbody").find_all('tr'):
cnt += 1
temp = i.find('th').text
i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal%s">Open Modal</button><div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p></p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>' % str(cnt), 'html.parser'))
i.find('th')[7].find('p')str(destinations[int(temp)])
print(destinations[int(temp)])
#return HttpResponse({"res":res},file.to_html())
#return HttpResponse(res.to_html())
#return HttpResponse(soup)
return checking(request,soup)
#return render(request,"checking.html",{'res':res})
else:
return render(request,"form.html")
我正在尝试访问模态中数据框的值,但问题是我只能访问模态中的第一个索引值。如果我单击第二个或第三个索引的模式,我将获得第一个索引的值。
这是我的代码
def form(request):
#return HttpResponse("form")
#x = sol_one()
#file = pd.read_csv('C:/Users/yassa/djangoProjects/first_demo_project/PythonExport.csv')
#z=file.to_html()
if request.method == "POST":
num1 = request.POST["num1"]
#num2 = request.POST["num2"]
res,destinations = bigdata(num1)
soup = BeautifulSoup(res.to_html(), "html.parser")
soup.find("thead").find('tr').append(BeautifulSoup('<td>Next Result</td>', 'html.parser'))
for i in soup.find("tbody").find_all('tr'):
temp = i.find('th').text
i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal">Open Modal</button><div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p></p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>', 'html.parser'))
#i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal">Open Modal</button><div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p>'+str(destinations[int(temp)])+'</p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>
i.find('th')[7].find('p')str(destinations[int(temp)])
print(destinations[int(temp)])
#return HttpResponse({"res":res},file.to_html())
#return HttpResponse(res.to_html())
#return HttpResponse(soup)
return checking(request,soup)
#return render(request,"checking.html",{'res':res})
else:
return render(request,"form.html")
尽管在单击模式时所有值都在控制台上正确显示,但它在所有可单击模式上重复第一个索引的值。 这是截图。
您正在添加多个具有相同 ID (#MyModal) 的模态框,因此当单击按钮时,将打开第一个 ID 为 MyModal 的模态框,其中包含第一个索引的数据。
一个快速解决方法是使用迭代器并为每个模态分配一个唯一的 ID,如下所示:
modal_identifier = 0
for i in soup.find("tbody").find_all('tr'):
temp = i.find('th').text
i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal'+ modal_identifier +'">Open Modal</button><div class="modal fade" id="myModal'+ modal_identifier +'" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p></p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>', 'html.parser'))
#i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal'+ modal_identifier +'">Open Modal</button><div class="modal fade" id="myModal'+ modal_identifier +'" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p>'+str(destinations[int(temp)])+'</p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>
i.find('th')[7].find('p')str(destinations[int(temp)])
print(destinations[int(temp)])
modal_identifier += 1
您也可以考虑添加 1 个模态框,然后使用 Javascript 为模态框填充正确的数据。
你们模态框的id都一样。尝试以下操作:
def form(request):
#return HttpResponse("form")
#x = sol_one()
#file = pd.read_csv('C:/Users/yassa/djangoProjects/first_demo_project/PythonExport.csv')
#z=file.to_html()
if request.method == "POST":
num1 = request.POST["num1"]
#num2 = request.POST["num2"]
res,destinations = bigdata(num1)
soup = BeautifulSoup(res.to_html(), "html.parser")
soup.find("thead").find('tr').append(BeautifulSoup('<td>Next Result</td>', 'html.parser'))
cnt = 0
for i in soup.find("tbody").find_all('tr'):
cnt += 1
temp = i.find('th').text
i.append(BeautifulSoup('<td><button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal%s">Open Modal</button><div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">×</button><h4 class="modal-title">Modal Header</h4></div><div class="modal-body"><p></p></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div></td>' % str(cnt), 'html.parser'))
i.find('th')[7].find('p')str(destinations[int(temp)])
print(destinations[int(temp)])
#return HttpResponse({"res":res},file.to_html())
#return HttpResponse(res.to_html())
#return HttpResponse(soup)
return checking(request,soup)
#return render(request,"checking.html",{'res':res})
else:
return render(request,"form.html")