Создаем новостной блог с Python и Django

Создаем новостной блог с Python и Django

Создаем новостной блог с 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 новостями.

Источник

Читайте также