Створення додатку на Python Django

Python – це високорівнева мова програмування загального призначення, що активно розвивається.
В попередній статті було розглянути як створити проект на Django Python.

django українською

Чому нам слід використовувати саме Python, а не Ruby чи PHP? З Python ви отримуєте наступні дивовижні переваги:

  1. Легко читабельний синтаксис.
  2. Дивовижне ком’юніті.
  3. Легко вивчається.
  4. Python корисний для всього: від базових скриптів командного рядка до комплексної веб-розробки.

В даному матеріалі буде розглянуто як створити додаток на Django Python. Створимо прототип блогу на сайті.

В консолі вибираємо робочу папку проекту:

# вибір папки проекту site1


> cd c:/Pycharm/site1

Створюємо новий додаток, з певною назвою. Наприклад blog:



# створення нового додатку blog в  проекті site1 

> python manage.py startapp blog

В структурі проекту з’явиться нова папка blog, яка міститиме файли, що необхілні для роботи додатку.

Кожен раз при стовренні нового додатку, його потрібно зареєструвати в файлі settings.py, що знаходиться в основній папці проекту (site1 в нашому випадку).

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #add new page
    'main',
    'blog'    # реєстрація нового додатку blog в файлі settings.py

]

Далі потрібно в файлі urls.py, що знаходиться в основній папці проекту (site1) потрібно налаштувати відстеження урла.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),      # налаштування відстеження сторінки admin (є за замовчуванням)
    path('', include('main.urls')),       # налаштування відстеження головної сторінки
    path('blog/', include('blog.urls')),  # налаштування відстеження сторінки blog
]

Після чого потрібно створити файл urls.py в папці додатку blog і в ньому налаштувати відстеження урлів та підключити файл views.py в якому буде оголошено новий метод для роботи з додатком blog.

# підключення методу blog та налаштування відстеження урлів в файлі blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('blog', views.blog, name='blog'),

]

В файлі views.py створюємо новий метод який буде показувати html сторінку blog.html.

from django.shortcuts import render

# Create your views here.

def blog(request):
    return render(request,'blog/blog.html')

Сторінку blog.html та відповідні папки потрібно створити і помістити в папку додатку в такій послідовності blog/templates/blog/ blog.html.

Додаток створений і буде відображається за адресою http://127.0.0.1:8000/blog/blog.

На наступному етапі потрібно налаштувати підключення додатку до бази даних. Для цього в файлі blog/models.py створимо клас Blog, який буде відповідати за відповідну таблицю в базі даних. Дана таблиця міститиме три поля: title, text, image.

from django.db import models

# створюємо необхідні класи

class Blog(models.Model):
    title = models.CharField('Назва', max_length=50)
    text = models.TextField('Опис')
    image = models.ImageField(upload_to='images/')
    def __str__(self):
        return self.title
    class Meta:
        verbose_name = "Запис"
        verbose_name_plural = "Всі записи"

Запускаємо міграції, щоб дана таблиця додалася до бази даних. В командному рядку почергово потрібно виконати наступні команди:

> python manage.py makemigrations

> python manage.py migrate

Щоб відобразити дану таблицю в панелі адміністратора потрібно її підключити в файлі blog/admin.py:

from django.contrib import admin
from .models import Blog
# Register your models here.
admin.site.register(Blog)

https://senior.ua/articles/stvoryumo-formu-zavantazhennya-faylv-v-django

У панелі адміністратора з’явиться розділ Blog, через який можна додавати записи в базу даних.

Залишилось відобразити запис на фронтенд частині нашого додатку.

Для цього у файлі blog/views.py підключаємо потрібну модель з класом Blog.
Далі в функції blog стоворимо змінну blogs в яку з нашої моделі Blog витягнемо всі об’єкти. Також є можливість витягувати певний об’єкт за вказаними критеріями та налаштувати їх сортування.

from django.shortcuts import render
from .models import Blog     # підключення класу Blog


def blog(request):
    blogs = Blog.objects.all()  #витягуємо всі об'єкти з моделі Blog
    return render(request,'blog/blog.html',{'title': 'Сторінка блогу', 'blogs': blogs})

Також потрібно у файлі blog/templates/blog.html витягнути дані, які ми отримуємо із контроллера (файлу views.py) використовуємо подвійні фігурні дужки шаблонізатора Jinja {{…}}, щоб вивести назву сторінки та циклі виведемо всі записи блогу.

{% extends 'main/base.html' %}
{% block title %}
{{ title }} # вивід назви сторінки
{% endblock %}
{% block content %}


# вивід записів блогу 

{% if blogs %}
<div class="alert alert-warning mt-2">
{% for el in blogs %}

        <h2>{{el.title}}</h2>
        <p>{{el.task}}</p>
        <p align="right" class="changelink">Поширити</p>
        {% endfor %}
        </div>
{% else  %}
        <p> Немає записів </p>

{% endif %}
{% endblock %}
Створення першого проекту на Django Python

Відкриваємо середовище розробки Pycharm і створюємо новий проект. В даному проекті (папці) будуть зберігатися всі наші Django розробки.

В попередній статті Як встановити Django розказується як встановити середовище Django через pip.
Що таке pip і як з ним працювати: Встановлення модулів Python з допомогою pip.

Далі в командному рядку вибераємо робочу папку та створюємо новий проект Django:

# вибір папки


> cd c:/Pycharm/django

# створення нового проекту з назвою site1


> django-admin startproject site1

В робочій папці буде створено папку site1 із файлами які потрібні для роботи django-проекту.

Далі створюємо локальну базу даних для роботи нашого проекту:

# вибір папки site1


> cd c:/Pycharm/site1

# створення бази даних проекту Django

> python manage.py migrate

Після створення бази даних запускаємо сервер:

# запуск сервера


> python manage.py runserver

При успішному запуску сервера в консолі буде відповідне повідомлення про успішний запуск сервера:
“Django version 4.0.3, using settings ‘site1.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.”

Робота з файлами Excel в Python

Module Python OpenPyxl – це бібліотека для роботи з файлами Excel. Для початку роботи з цією бібліотекою потрібно її встановити через pip.

# підключення бібліотеки openpyxl
from openpyxl import load_workbook

# підключення шляху до ексель-файлу
excel_file = "test_excel.xlsx"

# завантаження ексель-файлу
wb = load_workbook(excel_file)

# вибір потрібного листа
ws = wb['Лист1']

# зчитування вмісту клітинки
k = ws.cell(row=2, column=3).value
k1 = ws.cell(row=2, column=4).value
s = k1 + k2

# запис значення в клітинку
ws.cell(row=2, column=5).value = s

# збереження ексель-файлу
wb.save(excel_file)

Скопіювати файл в іншу папку shutil Python

Модуль shutil пропонує ряд високорівневих операцій над файлами та колекціями файлів. Зокрема, передбачені функції, які підтримують копіювання та видалення файлів. Для операцій з окремими файлами можна також використовувати модуль os.

import os, shutil
# шлях до папки звідки потрібно скопіювати
input_dir = 'img_input/' 

#шлях до папки куди потрібно скопіювати
output_dir = 'img_output/'
# ім'я файлу
output_img_name = 'Фото-1.jpg'
linkForPhotos = input_dir  + output_img_name
# Копіювання файлу
shutil.copy(linkForPhotos, output)
Поворот картинки з допомогою PIL Python

PIL є однією з бібліотек Python, що підтримує роботу з зображеннями . Pillow це форк PIL (Python Image Library), який з’явився завдяки підтримці Алекса Кларка та інших учасників. Заснована на коді PIL, а потім перетворилася на покращену, сучасну версію. Надає підтримку при відкритті, керуванні та збереженні багатьох форматів зображення.

Зокрема з допомогою PIL можна легко обертати зображення на задану кількість градусів.

from PIL import Image

#читаємо вхідне зображення
im = Image.open("rotate-input.jpg")

#повертаємо зображення на 10 градусів
angle = 10
out = im.rotate(angle, expand=True)
#зберігаємо вихідне зображення
out.save('rotate-output.jpg')
Видалення переносу рядка в клітинці Excel

Ручне видалення

Через Ctrl+H ,викликаємо діалогове вікно Знайти та замінити (Find and Replace).
Ставимо курсор у поле Знайти (Find what) та тиснемо Ctrl+J . На перший погляд поле здасться порожнім, але якщо уважно подивитися, то можна побачити в ньому маленьку точку.
У полі Замінити на (Replace With) введіть будь-яке значення для вставки замість повернення каретки. Зазвичай для цього використовують пробіл, щоб уникнути випадкового склеювання двох сусідніх слів. Якщо потрібно просто видалити перенесення рядків, можна залишити поле Замінити на (Replace With) порожнім. Після натискання на кнопку Замінити все (Replace All) отримаємо потрібний результат і всі переноси рядків в клітинці Ексель будуть замінені на пробіл чи інший символ.

Видалення з допомогою формули

Наступна формула підходить для заміни перенесення рядка будь-яким іншим символом (наприклад, «,» – кома + пробіл). У такому разі рядки не будуть об’єднані та зайві прогалини не з’являться.

=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(13);"");СИМВОЛ(10);", ")
=TRIM(SUBSTITUTE(SUBSTITUTE(B2,CHAR(13),""),CHAR(10),", ")

А таким чином можна видалити всі недруковані символи

=ПЕЧСИМВ(B2)
=CLEAN(B2)
Об’єднання Excel файлів в Python

Файли Excel можна об’єднувати за допомогою Pandas – програмної бібліотеки Python для обробки та аналізу даних. Робота pandas з даними будується поверх бібліотеки NumPy, що є інструментом нижчого рівня. Надає спеціальні структури даних та операції для маніпулювання числовими таблицями та рядами.

# Підключаємо бібліотеку pandas
import pandas as pd

# Записуємо файли в змінні
# f1 = pd.read_excel("file1.xlsx")
# f2 = pd.read_excel("file2.xlsx")
# f3 = pd.read_excel("file3.xlsx")

# Створюємо список із файлів, які потрібно об'єднати
all_df_list = [f1, f2, f3]

# Об’єднуємо всі файли all_df_list
# Pandas автоматично об'єднає файли за стовбцями
appended_df = pd.concat(all_df_list)

# Збереження в excel 
appended_df.to_excel("xls/merge/2_all.xlsx", index=False)
Встановлення модулів Python з допомогою pip

pip – це система керування пакетами, яка використовується для встановлення та керування програмними пакетами, написаними на Python. Перш ніж за допомогою pip встановлювати python-пакети, потрібно спочатку встановити сам pip.

Для Python 3.4+ З Python версії 3.4, pip поставляється разом з python інтерпретатором.

Для Python версії старішої 3.4
Офіційна інструкція (https://pip.pypa.io/en/latest/installing.html):
– Завантажити get-pip.py (зберігши з розширенням .py).

– Запустити цей файл (можуть знадобитися права адміністратора).

Є ще один спосіб (для Windows).
Встановити setuptools http://www.lfd.uci.edu/~gohlke/pythonlibs/#setuptools Встановити pip http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip

Приклад використання pip для встановлення модулів (встановлюємо пакет datetime):

На Linux:

sudo pip3 install datetime

На Windows:

pip3 install datetime

У Windows може з’явитись помилка, що pip3 не є внутрішньою чи зовнішньою командою, виконуваною програмою чи пакетним файлом. Тому потрібно спочатку вибрати директорію з pip3 через команду cd, а потім встановити потрібний модуль:

C:\Users\user19>cd C:\Program Files\Python37\Scripts

C:\Program Files\Python37\Scripts>pip3.exe install datetime
Як встановити Django

Django — це пакет Python, тому він може бути встановлений у будь-якому середовищі Python. Для Django 2.0 обов’язковим є Python 3.4 або старший.

Для Python 3 не потрібна база даних. Ця версія Python поставляється із вбудованою базою даних SQLite. Це полегшена база даних, яка підходить для розробки Django. Якщо потрібно розгортати додаток у виробничому середовищі, то знадобиться більш просунуте рішення: PostgreSQL, MySQL або Oracle. Більше дізнатися про те, як змусити базу даних працювати з Django, можна за цим посиланням: https://docs.djangoproject.com/en/2.0/topics/install/#database-installation.

Рекомендується використовувати virtualenv для створення віртуального середовища Python, щоб можна було спокійно використовувати різні версії пакетів для різних проектів. Це практичніше, ніж встановлювати пакети Python безпосередньо в систему. Ще одна перевага virtualenv – для встановлення пакетів Python не потрібні права адміністратора. Запустіть наступну команду в командному рядку для встановлення virtualenv:

 virtualenv:pip install virtualenv

Після встановлення virtualenv, створіть віртуальне середовище за допомогою наступної команди:

 virtualenv my_env

Це створить папку my_env разом із середовищем Python.

Будь-які бібліотеки Python, встановлені з активованим віртуальним середовищем Python, будуть встановлені в папку my_env/lib/python3.7/site-packages. Якщо в системі було встановлено Python 2.X, а ви встановили Python 3.X, то потрібно вказати virtualenv, щоб він працював з останньою версією. Можна вказати шлях, яким встановлено Python 3 і використовувати його для створення віртуального середовища за допомогою наступних команд:

$ which python3 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
$virtualenv my_env -p
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3


Використовуйте наступну команду для активації віртуального середовища:

source my_env/bin/activate

Командний рядок включатиме назву активного віртуального середовища в дужках:

(my_env) username:~$


Відключити віртуальне середовище можна за допомогою команди deactivate.

Більше про virtualenv можна дізнатися за посиланням https://virtualenv.pypa.io/en/latest/. Поверх virtualenv можна також використовувати virtualenvwrapper. Цей інструмент надає оболонки, за допомогою яких простіше створювати та керувати віртуальним середовищем. Завантажити його можна тут: https://virtualenvwrapper.readthedocs.io/en/latest/.

Установка Django за допомогою pip Система керування пакетами pip – рекомендований спосіб встановлення Django. У Python 3.6+ вона встановлена, а інструкції для встановлення можна знайти за посиланням https://pythonru.com/baza-znanij/ustanovka-pip-dlja-python-i-bazovye-komandy.

Використовуйте наступну команду в оболонці, щоб встановити Django за допомогою

pip:pip install Django==2.0.5

Django встановиться в папку Python під назвою site-packages/ активного віртуального середовища.

Тепер потрібно перевірити, чи успішно пройшла установка. Для цього в командному рядку необхідно ввести python, імпортувати Django та перевірити його версію наступним чином:

>>> import django django.get_version()
'2.0.5'


Django можна встановити й іншими способами. Повний гайд установки можна знайти тут: https://docs.djangoproject.com/en/2.0/topics/install/.”

Конвертація типів

Функція type() повертає тип об’єкта в Python. Її призначення очевидне, і на прикладах можна зрозуміти, навіщо ця функція потрібна.

type() — це базова функція, яка допомагає дізнатися про тип змінної. Значення, що вийшло, можна буде виводити точно так само, як звичайні значення змінних за допомогою print.

>>>k='2'
>>>type(k)
str

Також є функції, які можуть допомогти у конвертації типів даних. Зокрема, це int() – переведення в цілі, float() – – переведення в дійсні та str() – переведення в рядкові.

>>>k='2'
>>>k = int(k)
>>>type(k)
int