Как получить доступ к значениям индекса в модальном режиме с помощью Django - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь получить доступ к значениям фрейма данных в модальном режиме, но проблема в том, что я могу получить доступ только к значению 1-го индекса в модальном режиме.Если я нажму на модальное значение второго или третьего индекса, я получу значение первого индекса.

это мой код

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">&times;</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">&times;</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")

, хотя все значения правильно отображаются на консоли при нажатиина модальном, но это повторяет значение первого индекса на всех кликабельных модальных.это скриншот.

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

У вас, модалы, одинаковый идентификатор.Попробуйте следующее:

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">&times;</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")
0 голосов
/ 19 сентября 2019

Вы добавляете несколько модалов с одинаковым идентификатором (#MyModal), поэтому при нажатии кнопки открывается первый модал с идентификатором MyModal, в котором содержатся данные первого индекса.

AБыстрым решением было бы использовать итератор и присвоить каждому модалу уникальный идентификатор, например:

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">&times;</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">&times;</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 для заполнения модала правильными данными.

...