Как отобразить данные в формате json в приложении Python Django
Я новичок в Python. Я пытаюсь создать веб-приложение из Django, которое будет считывать данные из файла Excel и затем отображать эти данные на веб-странице в виде выпадающего списка .
Вот структура моего веб-приложения, которое я создаю
Я также создал скрипт 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 шага.
- Напишите функцию представления для просмотра данных Excel в HTML.
- Добавьте функцию представления в файл urls.py. .
- Создайте цикл в 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
Надеюсь, это вам поможет!