Ich bin neu in der Programmierung und hoffe, dass Sie diesen Artikel mit warmen Augen lesen.
Windows10 Python 3.7.6 newsapi-python 0.2.6 Django 3.0.6 DateTime 4.3
Der Name des Verzeichnisses zum Zeitpunkt der Erstellung lautet wie folgt.
sample_news
├─news
├─sample_news
├─static
└─manage.py
Gehen Sie zu News API Site und geben Sie Ihre E-Mail-Adresse ein, um den API-Schlüssel zu erhalten, und notieren Sie sich den API-Schlüssel. Verwenden Sie dann pip, um die NewsAPI-Bibliothek zu installieren.
pip install newsapi-python
Fügen Sie set.py in sample_news den folgenden Code hinzu, um die News-API zu verwenden. Geben Sie für api_key den Schlüssel ein, den Sie notiert haben.
setting.py
from newsapi import NewsApiClient
newsapi=NewsApiClient(api_key='xxxxxxxxxxxxxxxxxxxxxx')
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'news.apps.NewsConfig',
'newsapi',
]
Sie können jetzt die Nachrichten-API verwenden.
Fügen Sie den folgenden Code zu urls.py in sample_news hinzu, um das Routing zu konfigurieren.
sample_news/urls.py
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('news.urls')),
]
Als nächstes habe ich urls.py in Nachrichten erstellt und den folgenden Code eingegeben.
news/urls.py
from django.urls import path
from.import views
app_name = 'news'
urlpatterns = [
path('', views.IndexView.as_view(), name="index"),
path('docomo/',views.DocomoView.as_view(),name="docomo"),
path('au/',views.AuView.as_view(),name="au"),
path('softbank/',views.SoftbankView.as_view(),name="softbank")
]
Es gibt zwei Möglichkeiten, um die wichtigsten Nachrichten in der Nachrichten-API und die Nachrichten für einen bestimmten Zeitraum in der Vergangenheit abzurufen.
Als ich die Top-Nachrichten erhielt, wurde nichts angezeigt, wenn keine Nachrichten vorhanden waren. Daher habe ich die Methode angewendet, um die Nachrichten für einen bestimmten Zeitraum abzurufen. Mit der Nachrichten-API können Sie Nachrichten bis zu 30 Tage im Voraus erhalten, wenn Sie keine Gebühren erheben.
Dieses Mal habe ich das Schlüsselwort, den Zeitraum, die Anzeigereihenfolge und die Anzahl der Nachrichten angegeben. Es gibt auch Titelschlüsselwörter, Quellen, Domänen, Sprachen (Japanisch ist nicht erlaubt) usw.
news/views.py
from django.views import generic
from newsapi import NewsApiClient
from datetime import datetime, date, timedelta
class IndexView(generic.TemplateView):
template_name = "index.html"
class DocomoView(generic.TemplateView):
template_name = "docomo.html"
def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
today = date.today()
monthago = today-timedelta(days=30)
newsapi = NewsApiClient(api_key='e56b4ed3346745e3800bc521d085e04b')
context['all_article']=newsapi.get_everything(q='Docomo',
from_param=monthago,
to=today,
sort_by='publishedAt',
page_size=40)
return context
class AuView(generic.TemplateView):
template_name = "au.html"
def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
today = date.today()
monthago = today-timedelta(days=30)
newsapi = NewsApiClient(api_key='e56b4ed3346745e3800bc521d085e04b')
context['all_article']=newsapi.get_everything(q='KDDI',
from_param=monthago,
to=today,
sort_by='publishedAt',
page_size=40)
return context
class SoftbankView(generic.TemplateView):
template_name = "softbank.html"
def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
today = date.today()
monthago = today-timedelta(days=30)
newsapi = NewsApiClient(api_key='e56b4ed3346745e3800bc521d085e04b')
context['all_article']=newsapi.get_everything(q='Softbank',
from_param=monthago,
to=today,
sort_by='publishedAt',
page_size=40)
return context
Nachdem das Programm zur Nachrichtenerfassung abgeschlossen ist, müssen Sie es nur noch beschichten.
Diesmal die oberste Seite (index.html), die Seite, auf der Docomo-Nachrichten (docomo.html) angezeigt werden, die Seite, auf der Au-Nachrichten (au.html) angezeigt werden, und die Seite, auf der Softbank-Nachrichten (softbank.html) angezeigt werden 4 Ich habe 5 HTML-Dateien erstellt, eine Seite und den Teil, der jeder Seite gemeinsam ist (base.html).
templates
├─au.html
├─base.html
├─docomo.html
├─index.html
└─softbank.html
Die Seite, auf der Docomo-Nachrichten angezeigt werden, lautet wie folgt.
Dieses Mal werden Titel, URL und Nachrichtenbild erfasst und angezeigt.
docomo.html
{% extends 'base.html' %}
{% block title %}Sample_News | SOFTBANK{% endblock %}
{% block contents %}
<div class="grid">
{% for context in all_article.articles %}
<div class="news">
<div class="news-wrapper">
<img class="news-img" src="{{ context.urlToImage }}" alt="">
<a class="news-title" href="{{ context.url }}">{{ context.title }}</a>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
So schreibe ich auch Au- und Softbank-HTML-Dateien.
Schließlich ist die Codierung mit CSS abgeschlossen.
oberste Seite
Docomo News Seite
Dies ist die erste Web-App, die ich nach dem Studium von Django erstellt habe, also habe ich sie mit vielen Nachschlagewerken erstellt. Nach dem Studium hatte ich das Gefühl, dass ich mein Verständnis vertiefen könnte, indem ich meine eigene Web-App für Rache mache.
Das Suchwort wurde von Docomo für Docomo, Au für Au und Softbank für Softbank erstellt, aber nur Docomo-Nachrichten wurden für Docomo ausgegeben, aber Übersee-Nachrichten wurden für Au ausgegeben und Baseball-Nachrichten wurden für Softbank ausgegeben. Da es fertig war, möchte ich es verbessern.
Da ich zum ersten Mal einen Artikel schreibe, würde ich es begrüßen, wenn Sie mich wissen lassen könnten, ob es etwas gibt, das Sie nicht erreichen können.
Recommended Posts