Створення додатку на Python Django
11.03.2022Python – це високорівнева мова програмування загального призначення, що активно розвивається.
В попередній статті було розглянути як створити проект на Django Python.
Чому нам слід використовувати саме Python, а не Ruby чи PHP? З Python ви отримуєте наступні дивовижні переваги:
- Легко читабельний синтаксис.
- Дивовижне ком’юніті.
- Легко вивчається.
- 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 %}