Подготовка проекта
Для работы с индексами в PostgreSQL давайте продолжим работу над нашим приложением hr из прошлого модуля по ORM. Внесем немного изменений в модели, а именно уберем модель Compensation и сделаем не обязательными для заполнения поля department и contact, для более простого заполнения таблицы Employee. А также добавим поле about для добавление информации о сотруднике.
from django.db import models
from django.utils import timezone
class Contact(models.Model):
phone = models.CharField(max_length=50, unique=True)
address = models.CharField(max_length=50)
def __str__(self):
return self.phone
class Department(models.Model):
name = models.CharField(max_length=255)
description = models.TextField(null=True, blank=True)
def __str__(self):
return self.name
class Employee(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
about = models.CharField(max_length=10000)
age = models.SmallIntegerField(null=True)
created = models.DateTimeField(default=timezone.now)
work_experience = models.SmallIntegerField(default=0, null=True)
contact = models.OneToOneField(Contact, on_delete=models.CASCADE, null=True)
department = models.ForeignKey(Department, on_delete=models.CASCADE, default=None, null=True)
def __str__(self):
return f'{self.first_name} {self.last_name}'
Следующим шагом определим наши маршруты:
В urls.py проекта добавим
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("hr.urls")), # new
]
А в приложении hr создадим urls.py и добавим в него:
from django.urls import path
from .views import homePageView
urlpatterns = [path("", homePageView, name="home"), ]
Добавим в views.py приложения hr добавим:
from django.shortcuts import render
from .models import Employee
def homePageView(request):
employees = Employee.objects.filter(about='Test')
return render(request, 'list.html', {'employees': employees})
И в папку шаблонов добавим шаблон list.html следующего содержания:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test index PostgreSQL</title>
</head>
<body>
{{ employees }}
</body>
</html>
Django Debug Toolbar
Рассмотрим инструменты, которые представляет данная панель:
- Version: Предоставляет версию Django, которую мы используем.
- Time: Сообщает время, затраченное на загрузку веб-страницы.
- Setting: Показывает настройки страницы.
- Request: Показывает все запросы — views, файлы, куки и т.д.
- SQL: Список запросов к базе данных.
- Static Files: Предоставляет информацию о статических файлах.
- Templates: Предоставляет информацию о шаблонах.
- Cache: Сообщает информацию о существующем кэш.
- Loggin: Показывает количество зарегистрированных логов.
Установка Debug Toolbar в Django
Теперь установим библиотеку и настроим все необходимое для нее.
1) Установка библиотеки
Для установки django-debug-toolbar, используем команду pip install. Запустите следующий код в терминале/оболочке ОС:
pip install django-debug-toolbar
2) Добавление в INSTALLED_APPS
В settings.py добавьте следующую строку в раздел INSTALLED_APPS.
Проверьте, что бы debug_toolbar был добавлен после django.contrib.staticfiles.
INSTALLED_APPS = [
...
'debug_toolbar',
]
Также убедитесь, что в файле settings.py присутствует следующая строка STATIC_URL = '/static/'. Обычно она находится в конце модуля и не требует добавления.
Чтобы использовать Debug Toolbar, мы должны импортировать его пути. Следовательно, в urls.py добавьте код:
import debug_toolbar
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("hr.urls")),
path('__debug__/', include(debug_toolbar.urls)), # new
]
4) Подключение MiddleWare
Добавьте middleware панели инструментов debug_toolbar.middleware.DebugToolbarMiddleware, в список MIDDLEWARE в settings.py:
...
MIDDLEWARE = [
...
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
...
5) Упоминание INTERNAL_IPS
Django Debug Toolbar отображается только в том случае, если в списке INTERNAL_IPS есть IP приложения. Для разработки на локальном компьютере добавьте в список IP 127.0.0.1.
# debug_tool/settings.py
...
INTERNAL_IPS = [
'127.0.0.1',
]
Если списка INTERNAL_IPS еще нет, добавьте его в конец settings.py. На этом мы закончили подключение панель отладки, теперь проверим как она работает.
Выполним makemigrations и migrate и перейдем по адресу http://127.0.0.1:8000
Мы видим что наш проект работает и наша панель отображается корректно.