День 2: Створення агрегатора новин з Django та NewsAPI

pic

Створено за допомогою Canva

Ласкаво просимо до Дня 2 нашої серії проектів на Django! Сьогодні ми створимо агрегатор новин за допомогою Django та NewsAPI. Цей проект дозволить користувачам переглядати останні заголовки новин, шукати конкретні теми та дізнаватися, коли була опублікована кожна стаття.

Що ми створимо

  • Веб-додаток, який відображає останні заголовки новин
  • Функцію пошуку для знаходження новин за конкретними темами
  • Часові мітки для кожної новинної статті

Попередні вимоги

  • Базове розуміння Python
  • Встановлений Django на вашому комп'ютері
  • Текстовий редактор або IDE

Крок 1: Налаштування проекту у VS Code

Почнемо з створення нового проекту Django та додатку:

pip install django requests  
django-admin startproject news_aggregator  
cd news_aggregator  
python manage.py startapp news

Далі, встановіть необхідну бібліотеку:

pip install requests

Крок 2: Отримайте свій API-ключ

  1. Зареєструйтесь на безкоштовному акаунті на NewsAPI.

pic

  1. Після входу знайдіть ваш API-ключ на панелі приладів.

pic

Крок 3: Налаштування проекту

Відкрийте news_aggregator/settings.py та додайте наступне:

INSTALLED_APPS = [  
 # ... інші додатки  
 'news',  
]  

# Додайте ваш NewsAPI ключ  
NEWS_API_KEY = 'YOUR_API_KEY_HERE'

Замініть 'YOURAPIKEY_HERE' на API-ключ, який ви отримали від NewsAPI.

Крок 4: Створення виду

У news/views.py додайте наступний код:

import requests  
from django.shortcuts import render  
from django.conf import settings  
from datetime import datetime  

def news_list(request):  
 query = request.GET.get('q', '')  

 if query:  
 url = f"https://newsapi.org/v2/everything?q={query}&apiKey={settings.NEWS_API_KEY}"  
 else:  
 url = f"https://newsapi.org/v2/top-headlines?country=us&apiKey={settings.NEWS_API_KEY}"  

 response = requests.get(url)  
 data = response.json()  
 articles = data.get('articles', [])  

 for article in articles:  
 published_at = article.get('publishedAt')  
 if published_at:  
 article['formatted_publishedAt'] = datetime.fromisoformat(published_at[:-1]).strftime('%Y-%m-%d %H:%M:%S')  

 context = {  
 'articles': articles,  
 'query': query  
 }  
 return render(request, 'news/news_list.html', context)

Цей вигляд виконує наступні кроки:

  1. Перевіряє, чи є запит на пошук у URL.
  2. Надсилає запит до NewsAPI для отримання статей.
  3. Форматує часову мітку для кожної статті.
    4.
    pic

Створено за допомогою Canva

Ласкаво просимо до Дня 2 нашої серії проектів на Django! Сьогодні ми створимо агрегатор новин за допомогою Django та NewsAPI. Цей проект дозволить користувачам переглядати останні заголовки новин, шукати конкретні теми та дізнаватися, коли була опублікована кожна стаття.

Що ми створимо

  • Веб-додаток, який відображає останні заголовки новин
  • Функцію пошуку для знаходження новин за конкретними темами
  • Часові мітки для кожної новинної статті

Попередні вимоги

  • Базове розуміння Python
  • Встановлений Django на вашому комп'ютері
  • Текстовий редактор або IDE

Крок 1: Налаштування проекту у VS Code

Почнемо з створення нового проекту Django та додатку:

pip install django requests  
django-admin startproject news_aggregator  
cd news_aggregator  
python manage.py startapp news

Далі, встановіть необхідну бібліотеку:

pip install requests

Крок 2: Отримайте свій API-ключ

  1. Зареєструйтесь на безкоштовному акаунті на NewsAPI.

pic

  1. Після входу знайдіть ваш API-ключ на панелі приладів.

pic

Крок 3: Налаштування проекту

Відкрийте news_aggregator/settings.py та додайте наступне:

INSTALLED_APPS = [  
 # ... інші додатки  
 'news',  
]  

# Додайте ваш NewsAPI ключ  
NEWS_API_KEY = 'YOUR_API_KEY_HERE'

Замініть 'YOURAPIKEY_HERE' на API-ключ, який ви отримали від NewsAPI.

Крок 4: Створення виду

У news/views.py додайте наступний код:

import requests  
from django.shortcuts import render  
from django.conf import settings  
from datetime import datetime  

def news_list(request):  
 query = request.GET.get('q', '')  

 if query:  
 url = f"https://newsapi.org/v2/everything?q={query}&apiKey={settings.NEWS_API_KEY}"  
 else:  
 url = f"https://newsapi.org/v2/top-headlines?country=us&apiKey={settings.NEWS_API_KEY}"  

 response = requests.get(url)  
 data = response.json()  
 articles = data.get('articles', [])  

 for article in articles:  
 published_at = article.get('publishedAt')  
 if published_at:  
 article['formatted_publishedAt'] = datetime.fromisoformat(published_at[:-1]).strftime('%Y-%m-%d %H:%M:%S')  

 context = {  
 'articles': articles,  
 'query': query  
 }  
 return render(request, 'news/news_list.html', context)

Цей вигляд виконує наступні кроки:

  1. Перевіряє, чи є запит на пошук у URL.
  2. Надсилає запит до NewsAPI для отримання статей.
  3. Форматує часову мітку для кожної статті.
    4.
    Передає статті та запит до шаблону.

Крок 5: Створення шаблону

Створіть новий файл news/templates/news/news_list.html:






Агрегатор новин
Пошук           {% якщо query %}    
Результати пошуку для "{{ query }}"
    {% інакше %}    
Останні новини
    {% кінець %}       {% для article в articles %}    
{{ article.title }}
{{ article.description }}
Опубліковано: {{ article.formatted_publishedAt }}
Читати більше    
    {% порожньо %}    
Статей не знайдено.
    {% кінець %}       

Цей шаблон створює просту веб-сторінку з формою пошуку та списком новинних статей.

Крок 6: Налаштування URL

У news_aggregator/urls.py додайте:

from django.contrib import admin   
from django.urls import path   
from news.views import news_list      

urlpatterns = [    
    path('admin/', admin.site.urls),    
    path('', news_list, name='news_list'),   
]  

Це налаштовує маршрутизацію URL для нашого додатку.

Крок 7: Запуск проекту

Тепер запустіть сервер Django:

python manage.py runserver

Перейдіть за посиланням http://127.0.0.1:8000/ у вашому браузері, щоб побачити ваш агрегатор новин в дії!

pic

Як це працює

  1. Коли ви відвідуєте сторінку, вона показує останні заголовки новин США.
  2. Ви можете використовувати рядок пошуку для знаходження новин за конкретними темами.
  3. Кожна стаття показує заголовок, короткий опис, коли вона була опублікована, та посилання на повний текст.

Вітаємо! Ви створили функціональний агрегатор новин за допомогою Django та NewsAPI. Цей проект демонструє, як:

  • Налаштувати проект Django
  • Використовувати зовнішні API в вашому додатку
  • Створювати динамічні веб-сторінки з взаємодією з користувачем
  • Форматувати та відображати дані з API

Пам'ятайте, що безкоштовний план NewsAPI має обмеження на використання, тому будьте уважні, розробляючи та тестуючи ваш додаток. Як наступні кроки ви можете розглянути:

  • Додавання пагінації для показу більше результатів
  • Дозволити користувачам фільтрувати за датою або джерелом новин
  • Реалізація кешування для зменшення кількості запитів до API та покращення продуктивності

Продовжуйте досліджувати та успіхів у програмуванні!

Отримати повний код можна за посиланням https://github.com/Mathurdanduprolu/Day2-NewsAggregator.git

  • Слідкуйте за мною на Medium для інших навчальних посібників з Django та веб-розробки.
  • Поділіться своїм досвідом та відгуками в коментарях — мені буде цікаво почути вашу думку!
  • Не забудьте похвалити та поділитися цим блогом з вашою мережею.

Давайте разом будувати неймовірні додатки! 🚀
Передає статті та запит до шаблону.

Крок 5: Створення шаблону

Створіть новий файл news/templates/news/news_list.html:









Агрегатор новин
Пошук           {% якщо query %}    
Результати пошуку для "{{ query }}"
    {% інакше %}    
Останні новини
    {% кінець %}       {% для article в articles %}    
{{ article.title }}
{{ article.description }}
Опубліковано: {{ article.formatted_publishedAt }}
Читати більше    
    {% порожньо %}    
Статей не знайдено.
    {% кінець %}       

Цей шаблон створює просту веб-сторінку з формою пошуку та списком новинних статей.

Крок 6: Налаштування URL

У news_aggregator/urls.py додайте:

from django.contrib import admin   
from django.urls import path   
from news.views import news_list      

urlpatterns = [    
    path('admin/', admin.site.urls),    
    path('', news_list, name='news_list'),   
]  

Це налаштовує маршрутизацію URL для нашого додатку.

Крок 7: Запуск проекту

Тепер запустіть сервер Django:

python manage.py runserver

Перейдіть за посиланням http://127.0.0.1:8000/ у вашому браузері, щоб побачити ваш агрегатор новин в дії!

pic

Як це працює

  1. Коли ви відвідуєте сторінку, вона показує останні заголовки новин США.
  2. Ви можете використовувати рядок пошуку для знаходження новин за конкретними темами.
  3. Кожна стаття показує заголовок, короткий опис, коли вона була опублікована, та посилання на повний текст.

Вітаємо! Ви створили функціональний агрегатор новин за допомогою Django та NewsAPI. Цей проект демонструє, як:

  • Налаштувати проект Django
  • Використовувати зовнішні API в вашому додатку
  • Створювати динамічні веб-сторінки з взаємодією з користувачем
  • Форматувати та відображати дані з API

Пам'ятайте, що безкоштовний план NewsAPI має обмеження на використання, тому будьте уважні, розробляючи та тестуючи ваш додаток. Як наступні кроки ви можете розглянути:

  • Додавання пагінації для показу більше результатів
  • Дозволити користувачам фільтрувати за датою або джерелом новин
  • Реалізація кешування для зменшення кількості запитів до API та покращення продуктивності

Продовжуйте досліджувати та успіхів у програмуванні!

Отримати повний код можна за посиланням https://github.com/Mathurdanduprolu/Day2-NewsAggregator.git

  • Слідкуйте за мною на Medium для інших навчальних посібників з Django та веб-розробки.
  • Поділіться своїм досвідом та відгуками в коментарях — мені буде цікаво почути вашу думку!
  • Не забудьте похвалити та поділитися цим блогом з вашою мережею.

Давайте разом будувати неймовірні додатки! 🚀

Перекладено з: Day 2: Building a News Aggregator with Django and NewsAPI

Leave a Reply

Your email address will not be published. Required fields are marked *