Рубрики
Без рубрики

Разработка моего местного побочного проекта Covid-19

Введение Основным планом было разработка трекера Covid-19 в Джанго, который показывает локальный DA … с меткой Django, Python, Showdev, начинающих.

Введение

Основным планом было разработка трекера COVID -19 в Джанго, который показывает местные данные на Филиппинах – до тех пор, пока не скрыта страница Министерства здравоохранения и инвалидов, где статистика может быть сорвана.

Я сделал краудсорсинг на Facebook, и все поделились фотографией ежедневной статистики за город – что я не ожидал – но это была моя вина, мой вопрос не был ясен.

Кодирование

У меня уже есть опыт игры с API, поэтому я подумал, что сейчас будет проще, так как я мог бы просто использовать свой код в качестве ссылки.

Я нашел Крис Майкл от Google и обнаружил, что легко использовать. API вернулся:

{
"report":
    {
     "country":"philippines",
     "flag":"https://www.worldometers.info/img/flags/small/tn_rp-flag.gif",
     "cases":7579,
     "deaths":501,
     "recovered":862,
     "active_cases":[],
     "closed_cases":[]
    }
}

Данные не полны, но это было хорошо. Так что, вызывая и используя API, я закончил:

api.py

import requests


def  get_data():

    url =  "https://covid19-server.chrismichael.now.sh/api/v1/ReportsByCountries/philippines"

    headers = {'Accept': 'application/json'}

    r = requests.get(url, headers=headers)

    stat = r.json()

    stat_data = {

    'stat': stat['report']

    }

    return stat_data

Что было почти таким же, как и мой первый опыт API:

Программа Python, которая твиты извлекает данные из icanhazdadjoke.com

Висенте Г. Рейес ・ 6 марта ’19 ・ 3 мин читать

Хотя это был не первый раз, когда я использовал API в Python, это было, однако, я впервые интегрировал API с Джанго. Я закончил с:

views.py

...
from django.views.generic import ListView
from covid_virus_tracker.users import api
...

class  HomeView(ListView):

    def  get(self, request):  

        stat_data = api.get_data()

        return render(request, 'pages/home.html', stat_data)

Однако api.py Зарегистрировался как модуль Python, и я, честно говоря, мне было трудно понять, почему. Пока я не заглянул в исходный код и не выяснил, что при импорте в Cookiecutter-Django , вы должны начать с проекта, вплоть до приложения, а затем в файл, если вы попадете из другого приложения.

Пример: от project_name.users.models Import View

Тогда на Страницы/home.html , все, что мне нужно было сделать, это:

{{stat.recovered}} {{stat.cases}} {{stat.deaths}}

Тем не менее, я чувствовал, что сайту нужно что -то большее. Я чувствовал, что должен был сообщить пользователям, что происходит во всем мире, поэтому я интегрировал API, который сосказывает блоги с ключевым словом Covid-19. Я нашел Rapidapi, который у меня уже был аккаунт, и нашел API контекстуала. API вернулся:

{
    "type": "news",
    "didUMean": "",
    "totalCount": 2922,
    "relatedSearch": [
        "coronavirus",
        "ist",
        "updated",
        "pm",
        "daily",
        "cases",
        "delhi",
        "india",
        "published",
        "times",
        "sign",
        "video online"
    ],
    "value": [
        {
            "title": "Grounded jazz saxophonist plans to 'dream big' after lockdown",
            "url": "https://www.smh.com.au/culture/music/grounded-jazz-saxophonist-plans-to-dream-big-after-lockdown-20200427-p54nis.html?ref=rss&utm_medium=rss&utm_source=rss_feed",
            "description": "The coronavirus Great Pause trashed Flora Carbo's plans for a world tour with a new album. Now she's fighting snails and making plans.",
            "body": "Very large text size\nARTIST IN THE TIME OF COVID-19: Flora Carbo\nJazz saxophonist Flora Carbo has recently released a new album, Voice. The next logical step? A launch then a tour  two things the Fairfield artist cant do thanks to the coronavirus.\nI had a six-week European trip cancelled; I was going to play at the Amersfoort Jazz Festival [Netherlands], attend the Jazzahead! conference in Germany and collaborate with some friends.\nJazz saxophonist Flora Carbo.\nCarbo was also going to capitalise on some serious buzz with gigs at the Melbourne International Jazz Festival (now cancelled, natch), where shes previously played with Maceo Parker and the Meltdown Big Band.\nAdvertisement\nShe was all set to front Flora Carbo Trio in the lunchtime series and I was going to be playing with [trumpeter] Niran Dasika as part of his group\".\nNow, Carbo is fighting snails out of her vegie garden, re-booking gigs, completing sudokus and 100 per cent subsisting on hot chocolate\".\nIm very lucky to have be",
            "keywords": "covid,time",
            "language": "en",
            "isSafe": true,
            "datePublished": "2020-04-27T01:35:36",
            "provider": {
                "name": "smh"
            },
            "image": {
                "url": "https://static.ffx.io/images/$zoom_1.32375%2C$multiply_0.7554%2C$ratio_1.776846%2C$width_1059%2C$x_0%2C$y_245/t_crop_custom/q_86%2Cf_auto/8a1b5ccca1398947c8147aae6400e5a7fecf2359",
                "height": 450,
                "width": 800,
                "thumbnail": "https://rapidapi.contextualwebsearch.com/api/thumbnail/get?value=5941184483138831277",
                "thumbnailHeight": 168,
                "thumbnailWidth": 298,
                "base64Encoding": null,
                "name": null,
                "title": null,
                "imageWebSearchUrl": null
            }
        }
    ]
}

Интеграция была проще, так как я сделал это на api.py Анкет Я закончил с:

import requests

import environ

env = environ.Env()


def get_data():
    url = "https://contextualwebsearch-websearch-v1.p.rapidapi.com/api/Search/NewsSearchAPI"
    querystring = {"autoCorrect": "false", "pageNumber": "1", "pageSize": "10", "q": "covid", "safeSearch": "true"}
    headers = {
      'x-rapidapi-host': "contextualwebsearch-websearch-v1.p.rapidapi.com",
      'x-rapidapi-key': env("x-rapidapi-key"),
    }
    r = requests.get(url, headers=headers, params=querystring)
    data = r.json()
    article_data = {
      'data': data['value']
    }
    return article_data

Обратите внимание, что одно отличие – это Импорт среда и создание эн. Env () переменная. Мне нужно это, чтобы скрыть мои ключи API, и так Cookiecutter-Django скрывает это. Все, что мне нужно было сделать, это поместить ключи в .envs/local/.django & .envs/Производство/.django И мне было хорошо идти.

views.py является:

...
from django.views.generic import ListView
from covid_virus_tracker.users import services
...

class  IndexData(ListView):



def  get(self, request):

    article_data = services.get_data()

    return render(request, 'pages/news.html', article_data)

На Страницы/News.html Все, что мне нужно было сделать, это пройти через данные, чтобы показать их. Как это:

{% for item in data %}
{{ item.title }}
{{ item.datePublished|slice:":10" }} # | naturaltime from humanize didn't work so I had to slice through the date
{{ item.description }}
{{ item.provider.name }}

Сайт живой и можно увидеть в https://covid19ph-unofficial.icvn.tech/ .

Оригинал: “https://dev.to/highcenburg/developing-my-local-covid-19-side-project-2oa6”