Как отобразить данные в формате json в приложении Python Django

Я новичок в Python. Я пытаюсь создать веб-приложение из Django, которое будет считывать данные из файла Excel и затем отображать эти данные на веб-странице в виде выпадающего списка .

Вот структура моего веб-приложения, которое я создаю App Structure

Я также создал скрипт python, который разбирает данные excel и возвращает данные json

import pandas
import json

# Read excel document
excel_data_df = pandas.read_excel('Test-Data.xlsx', sheet_name='Sheet1')

# Convert excel to string
# (define orientation of document in this case from up to down)
thisisjson = excel_data_df.to_json(orient='records')

# Print out the result
print('Excel Sheet to JSON:\n', thisisjson)
thisisjson_dict = json.loads(thisisjson)

with open('data.json', 'w') as json_file:
    json.dump(thisisjson_dict, json_file)

Это вывод этого скрипта

[{"Name":"Jan","Month":1},{"Name":"Feb","Month":2},{"Name":"March","Month":3},{"Name":"April","Month":4},{"Name":"May","Month":5},{"Name":"June","Month":6},{"Name":"July","Month":7},{"Name":"August","Month":8},{"Name":"Sep","Month":9},{"Name":"October","Month":10},{"Name":"November","Month":11},{"Name":"December","Month":12}]

Это то, что я должен иметь на html

<!DOCTYPE html>
<html>
<body>

<h1>The select element</h1>

<p>The select element is used to create a drop-down list.</p>

<form action="">
  <label for="months">Choose a Month:</label>
  <select name="months" id="month">
    <option value="1">Jan</option>
    <option value="2">Feb</option>
    <option value="3">March</option>
    <option value="4">April</option>
  </select>
  <br><br>
  <input type="submit" value="Submit">
</form>
</body>
</html>

Теперь я застрял на том, как мы можем интегрировать это в мой webapp и как мы можем использовать эти данные Json для создания выпадающего списка на моей веб-странице.

Зачем делать дамп в json? Используйте pyexcel, его документацию легко понять. ссылка docs

Другим вариантом является использование ajax, вы можете реализовать вывод excel (json Response) простым способом в вашем шаблоне. Если вы не хотите использовать pyexcel (что в большинстве случаев достаточно), дайте мне знать, тогда мы сможем перейти к примеру с ajax.

Я не уверен, используете ли вы представление на основе функций или классов, но передавайте данные в контексте

...
context['months'] = [{"Name":"Jan","Month":1}, ...]
...

Затем в шаблоне выполните итерацию над ним

...
{% for item in months %}
  <select name="months" id="month">
    <option value="{{ item.Month }}">{{ item.Name }}</option>
  </select>
{% endfor %}
...

Вам необходимо выполнить следующие 3 шага.

  1. Напишите функцию представления для просмотра данных Excel в HTML.
  2. Добавьте функцию представления в файл urls.py.
  3. .
  4. Создайте цикл в HTML для просмотра данных months_data.

1. my_website/views.py

from django.http import Http404
from django.shortcuts import render

def get_months(request):
    months_data = your_json
    return render(request, 'your_html_path', {'months': months_data})

2. my_website/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.get_months),
]

3. home.html

<!DOCTYPE html>
<html>
<body>

<h1>The select element</h1>

<p>The select element is used to create a drop-down list.</p>

<form action="">
  <label for="months">Choose a Month:</label>
  <select name="months" id="month">

    {% for month in months %}
        <option value={{ month.Month }}>{{ month.Name }}</option>
    {% endfor %}

  </select>
  <br><br>
  <input type="submit" value="Submit">
</form>
</body>
</html>

Также вы можете найти больше информации о представлениях Написание представлений | Документация Django

и вы можете поискать больше информации об урлах URL dispatcher | Django documentation

Надеюсь, это вам поможет!

Вернуться на верх