Django погода часть № 2

25 апреля 2019 г. 0:00


В первой части мы создали проект и подготовили приложение wether для отображения погоды, теперь настало время создать нашу первую страницу!

Создадим папку templates в нашем приложении weather для хранения html страниц.

Так же создадим файл index.html со стандартным содержанием: 

 

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

</body>
</html>

В тэг <body> по традиции поместим текст: «Hello world!»:

<body>
    Hello world!
</body>

Отлично! Теперь у нас есть своя собственная страница со своей собственной надписью, как Вы понимаете, надпись может быть любой.

Чтобы Django отдавал браузеру нашу страницу нам нужно написать функцию представления, которая на запрос клиента будет отдавать нужную страницу и данные для динамического содержимого. Этим и займёмся! Откроем файл views.py и напишем в нём функцию:

from django.shortcuts import render

def index(request):
     return render(request, 'index.html')

Первой строкой импортируется функция render которая отрисовывает страницы, далее идёт наша функция которая принимает входящим параметром request – запрос от клиента и возвращает в ответ на этот запрос нашу страницу 'index.html'.

Хорошо, теперь нам надо прописать маршрут по которому Django будет вызывать нашу функцию. Для этого откроем файл url.py и приведем его к следующему виду:

from django.contrib import admin
from django.urls import path
from weather.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', index),
]

импортируем функцию из модуля views.py и пропишем маршрут path('index/', index), который означает – когда браузер обратиться по адресу нашего сайта 'index/' мы вызываем нашу функцию, которая в свою очередь вернёт нашу страницу.

Проверяем! Запускаем сервер как мы делали это раньше командой

python manage.py runserver

Открываем браузер и вводим адрес нашего сервера и маршрут: http://127.0.0.1:8000/index/ если всё сделано правильно, то мы увидим заветную надпись Hello world!

Для того чтобы разместить виджет погоды у нас на сайте, перейдем по адресу: https://yandex.ru/pogoda/moscow/informer далее выбираем желаемый город, размер и цвет.

 

 

И после этого копируем код информера для добавления его к нам на сайт. Открываем страницу index.html и в <body> добавим тэг <pи в него уже вставим скопированный код, не забываем про закрывающий тэг. Получим файл следующего содержания:  

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
Hello world!

<p>
<a href="https://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*https://yandex.ru/pogoda/213"
      target="_blank"><img
        src="https://info.weather.yandex.net/213/2_white.ru.png?domain=ru" border="0" alt="Яндекс.Погода"/><img
        width="1" height="1"
        src="https://clck.yandex.ru/click/dtype=stred/pid=7/cid=1227/*https://img.yandex.ru/i/pix.gif" alt=""
        border="0"/></a>
</p>
</body>
</html>

Соответственно чтобы добавить погоду ещё одного города,  добавляем пару тегов p/p и в них вставляем код еще одного информера.

Не очень удобно каждый раз переходить по адресу нашего сервера и страницы, по этому предлагаю изменить маршрут в файле urls.py.

Заменим path('index/', index) на path('', index), теперь перезапустив сервер и перейдя по адресу http://127.0.0.1:8000/ мы увидим то к чему стремились))

В следующем уроке рассмотри библиотеку requests и научимся с её помощью получать данные с сайтов через API.


Основы Django | Уроки Django | Сайт на Django |