Django#

Django — это мощный веб-фреймворк для Python, который позволяет быстро создавать сложные веб-приложения. Он включает в себя множество встроенных функций, таких как ORM (Object-Relational Mapping), аутентификация, админ-панель и многое другое.

Основные пакеты

Пакет

Версия

Репозиторий

Описание

python3-django

3.3.2.19-1+deb12u1+ci1

extended

Платформа веб-разработки

Дополнительные пакеты

Пакет

Версия

Репозиторий

Описание

python3-sqlalchemy

1.4.46+ds1-1+b2

installation

Библиотека абстракции базы данных (ORM)

python3-psycopg2

2.9.5+b2

installation

Адаптер базы данных PostgreSQL

Примечание

В репозиториях большая часть пакетов, относящихся к Django, имеют вид python3-django…

Установка Django#

  • установите пакет Django:

sudo apt install django

Создание проекта Django#

  • создайте новый проект Django:

django-admin startproject myproject

Эта команда создаст папку myproject со следующей структурой: Copy

myproject/
│
├── manage.py
└── myproject/
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    ├── asgi.py
    └── wsgi.py

Запуск сервера разработки#

  • перейдите в папку проекта и запустите сервер разработки:

cd myproject
python3 manage.py runserver
  • откройте браузер и перейдите по адресу http://127.0.0.1:8000/. Вы увидите стартовую страницу Django.

Создание приложения#

В Django проект может состоять из нескольких приложений.

  • создадим новое приложение:

python3 manage.py startapp myapp
  • эта команда создаст папку myapp со следующей структурой:

myapp/
│
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py

Регистрация приложения#

  • откройте файл myproject/settings.py и добавьте myapp в список INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'myapp',
]

Создание представления#

  • откройте файл myapp/views.py и добавьте простое представление:

from django.http import HttpResponse

def home(request):
    return HttpResponse("Привет, Django!")

Настройка маршрута#

  • откройте файл myapp/urls.py (если его нет, создайте) и добавьте маршрут:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.home, name="home"),
]
  • теперь откройте файл myproject/urls.py и подключите маршруты приложения:

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

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("myapp.urls")),
]

Проверка работы#

  • запустите сервер разработки:

python3 manage.py runserver
  • перейдите по адресу http://127.0.0.1:8000/. Вы увидите сообщение «Привет, Django!».

Использование шаблонов (Templates)#

  • создайте папку templates внутри папки myapp:

mkdir myapp/templates
  • cоздайте файл myapp/templates/index.html и добавьте следующий код:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Главная страница</title>
</head>
<body>
    <h1>Привет, {{ name }}!</h1>
</body>
</html>

Изменение представления#

  • измените файл myapp/views.py, чтобы использовать шаблон:

from django.shortcuts import render

def home(request):
    return render(request, "index.html", {"name": "Django"})

Работа с моделями (Models)#

  • откройте файл myapp/models.py и создайте простую модель:

from django.db import models

class Message(models.Model):
    text = models.CharField(max_length=200)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.text

Создание и применение миграций#

  • создайте миграции и примените их:

python3 manage.py makemigrations
python3 manage.py migrate

Использование модели в админке#

  • откройте файл myapp/admin.py и зарегистрируйте модель:

from django.contrib import admin
from .models import Message

admin.site.register(Message)
  • теперь перейдите по адресу http://127.0.0.1:8000/admin/, войдите в административную панель (создайте суперпользователя, если нужно) и управляйте объектами модели Message.

Запуск приложения в production#

Для запуска Django-приложения в production рекомендуется использовать WSGI-сервер, например, Gunicorn, и веб-сервер, например, Apache2.