Je suis nouveau dans la programmation, j'espère donc que vous lirez cet article avec des yeux chaleureux.
Windows10 Python 3.7.6 newsapi-python 0.2.6 Django 3.0.6 DateTime 4.3
Le nom du répertoire au moment de la création est le suivant.
sample_news
├─news
├─sample_news
├─static
└─manage.py
Accédez au site NewsAPI (https://newsapi.org/) et entrez votre adresse e-mail pour obtenir la clé API et noter la clé API. Utilisez ensuite pip pour installer la bibliothèque NewsAPI.
pip install newsapi-python
Ajoutez le code suivant à setting.py dans sample_news pour utiliser l'API News. Pour api_key, entrez la clé que vous avez notée.
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',
]
Vous pouvez désormais utiliser l'API News.
Ajoutez le code suivant à urls.py dans sample_news pour configurer le routage.
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')),
]
Ensuite, j'ai créé urls.py dans les actualités et entré le code suivant.
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")
]
Il y a deux façons d'obtenir les meilleures nouvelles dans l'API News et d'obtenir les nouvelles pour une certaine période dans le passé.
Quand j'ai eu les meilleures nouvelles, rien n'était affiché s'il n'y avait pas de nouvelles, alors j'ai adopté la méthode pour obtenir les nouvelles pendant un certain temps. L'API News vous permet d'obtenir des actualités jusqu'à 30 jours à l'avance si vous ne facturez pas.
Cette fois, j'ai spécifié le mot-clé, la période, l'ordre d'affichage et le nombre d'actualités. Il existe également des mots-clés de titre, des sources, des domaines, des langues (le japonais n'est pas autorisé), etc.
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
Maintenant que le programme d'acquisition de nouvelles est terminé, il ne vous reste plus qu'à l'enduire.
Cette fois, la page du haut (index.html), la page qui affiche les news de docomo (docomo.html), la page qui affiche les news (au.html) et la page qui affiche les news de softbank (softbank.html) 4 J'ai créé 5 fichiers html, une page et la partie commune à chaque page (base.html).
templates
├─au.html
├─base.html
├─docomo.html
├─index.html
└─softbank.html
La page qui affiche les actualités de Docomo est la suivante.
Cette fois, le titre, l'url et l'image d'actualité sont acquis et affichés.
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 %}
Écrivez des fichiers html au et Softbank comme celui-ci.
Enfin, le codage avec CSS est terminé.
haut de page
Page d'actualités Docomo
C'est la première application Web que j'ai créée après avoir étudié django, je l'ai donc créée en utilisant de nombreux livres de référence. Après avoir étudié, j'ai senti que je pouvais approfondir ma compréhension en créant ma propre application Web pour me venger.
Le mot de recherche a été effectué par docomo pour docomo, au pour au et softbank pour softbank, mais seules les nouvelles docomo ont été produites pour docomo, mais les nouvelles d'outre-mer ont été publiées pour au et les nouvelles de baseball pour softbank. Depuis qu'il a été fait, je voudrais l'améliorer.
De plus, comme c'est la première fois que j'écris un article, je vous serais reconnaissant si vous pouviez me faire savoir s'il y a quelque chose que vous ne pouvez pas atteindre.
Recommended Posts