Как вывести результаты из API на основе поиска пользователя с помощью Django
Как вы можете видеть на рисунке ниже, я пытаюсь заставить пользователя искать заданную страну, дату начала/окончания и получить результат "Подтвержденные случаи" и "Дата" обратно из API, но я не уверен, как это сделать.
Я пытался использовать этот API, чтобы заполнить выпадающее меню стран -->
https://api.covid19api.com/summary
но это другой API, который я должен использовать, но при изменении параметров для страны и даты -->
https://api.covid19api.com/country/afghanistan/status/confirmed?from=2020-09-06T00:00:00Z&to=2020-09-11T00:00:00Z
Вот фрагменты моего кода:
views.py
def home(request):
# second_response = requests.get('https://api.covid19api.com/country/afghanistan/status/confirmed?from=2020-09-06T00:00:00Z&to=2020-09-11T00:00:00Z').json()
second_response = requests.get('https://api.covid19api.com/summary').json()
my_list = []
for i in range(0, len(second_response['Countries'])):
my_list.append(second_response['Countries'][i]['Country'])
if request.method=='POST':
selected_country = request.POST['selected_country']
print('here', selected_country)
return render(request, 'home.html', {'my_list': my_list})
home.html
<div class="container justify-content-center">
<form action="{% url 'home' %}" method="post">
{% csrf_token %}
<label for="selected_country" style="margin-right: 5px;"> Select a Country, Start & End Dates : </label>
<select name="selected_country" >
{% for object in my_list %}
<option value="">{{object}}</option>
{% endfor %}
</select>
<label for="startdate"></label>
<input type="date" id="startdate">
<label for="enddate"></label>
<input type="date" id="enddate">
<input type="submit" value="Search" />
</form>
</div>
PLUS: когда я нажимаю на "поиск", я должен получить значение выбранной_страны, потому что я пытался распечатать его, но оно не отображается по какой-то причине, поэтому метод является post, но по какой-то причине я не могу получить обратно выбранную_страну
Любая помощь приветствуется
JAVASCRIPT
если у вас есть хоть какое-то представление о javascript
, я рекомендую вам делать это на javascript, потому что это сделает его лучше и проще
иначе :
view.py
def handler(request):
if request.method=='POST':
selected_country = request.POST['selected_country']
startDate= request.POST['startdate']
endDate= request.POST['enddate']
request_handler = requests.get(f"https://api.covid19api.com/country/{selected_country}/status/confirmed?from={startDate}T00:00:00Z&to={endDate}T00:00:00Z")
if request_handler.status_code=200:
#To prevent errors
request_json=request_handler.json()
else:
pass # do something
return render(request, 'result.html', {"json":request_json})
#you should handle the data at the front end using jinja blocks
примечание: я мало знаю о Django, поэтому код может быть нерабочим