Створено за допомогою 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-ключ
- Зареєструйтесь на безкоштовному акаунті на NewsAPI.
- Після входу знайдіть ваш API-ключ на панелі приладів.
Крок 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)
Цей вигляд виконує наступні кроки:
- Перевіряє, чи є запит на пошук у URL.
- Надсилає запит до NewsAPI для отримання статей.
- Форматує часову мітку для кожної статті.
4.
Створено за допомогою 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-ключ
- Зареєструйтесь на безкоштовному акаунті на NewsAPI.
- Після входу знайдіть ваш API-ключ на панелі приладів.
Крок 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)
Цей вигляд виконує наступні кроки:
- Перевіряє, чи є запит на пошук у URL.
- Надсилає запит до NewsAPI для отримання статей.
- Форматує часову мітку для кожної статті.
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/ у вашому браузері, щоб побачити ваш агрегатор новин в дії!
Як це працює
- Коли ви відвідуєте сторінку, вона показує останні заголовки новин США.
- Ви можете використовувати рядок пошуку для знаходження новин за конкретними темами.
- Кожна стаття показує заголовок, короткий опис, коли вона була опублікована, та посилання на повний текст.
Вітаємо! Ви створили функціональний агрегатор новин за допомогою 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/ у вашому браузері, щоб побачити ваш агрегатор новин в дії!
Як це працює
- Коли ви відвідуєте сторінку, вона показує останні заголовки новин США.
- Ви можете використовувати рядок пошуку для знаходження новин за конкретними темами.
- Кожна стаття показує заголовок, короткий опис, коли вона була опублікована, та посилання на повний текст.
Вітаємо! Ви створили функціональний агрегатор новин за допомогою 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