Создаем новостной блог с Python и Django
Django – это высокоуровневый фреймворк, написанный на Python
, который позволяет нам создавать серверные веб-приложения. В этой статье мы увидим, как создать новое приложение с помощью Django.
Мы будем использовать Api новостей и извлекать все заголовки новостей из api.
Выполните следующие действия в командной строке или терминале:
# установите Api для новостей
>>>pip install newsapi-python
# создайте проект
>>>django-admin startproject newsproj
# перейдите в созданную папку проекта
>>>cd newsproj
# создайте новое приложение в проекте
>>>python manage.py startapp mynewsapp
Затем создаем папку templates внутри mynewsapp.
И добавляем код в настройки проекта. Для чего заходим в файл setting.py:
# меняем
'DIRS': []
# на
'DIRS': [os.path.join(BASE_DIR, "templates"),]
Теперь наш проект сможет оперировать данной директорией.
Откройте views.py и создайте функцию-представление с именем index, которое принимает запрос и отображает html-код в качестве ответа. .
# импорт Api новостей
from django.shortcuts import render
from newsapi import NewsApiClient
# Создание функции представления
def index(request):
newsapi = NewsApiClient(api_key ='YOURKEY')
top = newsapi.get_top_headlines(sources ='techcrunch')
l = top['articles']
dsc =[]
nws =[]
im =[]
for i in range(len(l)):
f = l[i]
nws.append(f['title'])
dsc.append(f['description'])
im.append(f['urlToImage'])
mylist = zip(nws, dsc, im)
return render(request, 'index.html', context ={"mylist":mylist})
# Для работы функции Api необходмо заменить YOURKEY на соответствующий
ключ
Чтобы получить ключ нужно перейти по адресу и пройти регистрацию.
В папке templates создайте файл index.html:
# index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<!-- Optional theme -->
</head>
<body>
<div class="jumbotron" style="color:black">
<h1 style ="color:white">
Get The latest news on our website
</h1>
</div>
<div class="container">
{% for new, des, i in mylist %}
<img src="{{ i }}" alt="">
<h1>news:</h1> {{ new }}
{{ value|linebreaks }}
<h4>description:</h4>{{ des }}
{{ value|linebreaks }}
{% endfor %}
</div>
</body>
</html>
Далее сопоставьте адреса в urls.py.
from django.contrib import admin
from django.urls import path
from newsapp import views
urlpatterns = [
path('', views.index, name ='index'),
path('admin/', admin.site.urls),
]
Запустите сервер django:
>>>python manage.py runserver
И перейдите по указанному адресу. Если все выполнено правильно, то на экране должна появиться лента c новостями.