Как мне взять переменную из views.py в Django и отобразите его на моей HTML-странице

#python #html #django #pandas #django-templates

#python #HTML #django #pandas #django-шаблоны

Вопрос:

Я новичок в Django и нуждаюсь в помощи views.py . Я пытаюсь вызвать переменную из views.py на моем HTML-шаблоне, но понятия не имею, как это сделать. Ниже приведен мой views.py функция:

 def scheduleAlgo(request):
    givenData=pd.read_csv('~OneDriveDesktopexample.csv')
    df = pd.DataFrame(givenData)
    df['Mean']=df.mean(axis=1)
    df = df.sort_values(by="Mean", ascending=False)
    df.set_index("Subject", inplace = True)
    firstSubject = df.index[0]
    secondSubject = df.index[1]
    thirdSubject = df.index[2]
    fourthSubject = df.index[3]
    fifthSubject = df['Mean'].idxmin()
    if fifthSubject==fourthSubject:
        fourthSubject=df.index[4]
    subjectList=[fifthSubject,fourthSubject,thirdSubject,secondSubject,firstSubject]

    subjectSelection = random.choices(subjectList, weights=(20,18,17,16,15),k=5)
    return render(request, 
    'main/testml.html', 
    {
    'firstItem': subjectSelection[0],
    'secondItem':subjectSelection[1],
    'thirdItem':subjectSelection[2],
    'fourthItem':subjectSelection[3],
    'fifthItem':subjectSelection[4],
    }) #assigning values for calling in template
  

И это мой HTML-код:

     <table>
        <tr>
            <td>{{ firstItem }}</td>
        </tr>
    </table>
  

Кроме того, мой urls.py:

     path("testml", views.scheduleAlgo, name="scheduleAlgo"),
  

Я совершенно уверен, что сама функция работает, поскольку я протестировал ее на ноутбуке IPython.
По сути, я хочу иметь возможность вызывать индекс из списка (subjectSelection) и отображать его в моем HTML-коде. Как мне это сделать?

Комментарии:

1. вам не нужно устанавливать каждый элемент в качестве индекса списка, вместо этого вы можете выполнить цикл в самом шаблоне, проверьте docs.djangoproject.com/en/3.1/ref/templates/builtins/#for

2. @LinhNguyen итак, что мне написать в моем контекстном словаре?

Ответ №1:

Ну, видимо, мой код был правильным, но я назначил два представления одному шаблону. Это неверно, и вам нужно объединить их в одно представление, чтобы исправить это.