Содержание
Django - это мощный веб-фреймворк для Python, который позволяет быстро создавать веб-приложения. В этом руководстве мы создадим базовое приложение Django с нуля. Мы рассмотрим:
Установка Django Создание проекта Настройка базы данных Создание приложения Определение моделей Создание представлений Настройка URL-адресов Шаблонизация с помощью HTML Обслуживание статических файлов Работа с формами Интерфейс администратора Развертывание
К концу курса вы получите простое веб-приложение, работающее с использованием мощных возможностей Django. Давайте приступим!
Вы должны понимать Python и то, как его настроить; если вы не знаете, можете прочитать некоторые из этих материалов.
Установите Django
Django можно легко установить с помощью pip. Сначала убедитесь, что у вас установлен Python 3 и pip.
Откройте терминал или командную строку и выполните команду:
pip install Django.
Это приведет к установке последней версии Django.
Вы можете убедиться в том, что Django успешно установлен, выполнив команду:
python -m django --version.
Это должно вывести версию установленного Django.
Создайте проект
После установки Django мы можем создать наш первый проект.
Перейдите в каталог, где будет храниться ваш код, и выполните команду:
django-admin startproject myproject.
Это создаст папку myproject с некоторыми автоматически генерируемыми файлами и папками:
manage.py: Утилита командной строки, используемая для взаимодействия с проектом. myproject/settings.py: Настройки и конфигурация для проекта Django. myproject/urls.py: URL-маршруты верхнего уровня для проекта Django. myproject/init.py: Пустой файл указывает Python рассматривать папку myproject как пакет Python.
Настройка базы данных
По умолчанию Django использует SQLite, который не требует дополнительной настройки базы данных. SQLite сохраняет базу данных в файле в директории проекта.
Если вы хотите использовать другую базу данных, например PostgreSQL или MySQL, установите соответствующие связки баз данных и измените настройку DATABASES в файле myproject/settings.py.
Например, для использования PostgreSQL:
pip install psycopg2.
Затем в файле settings.py:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'password', 'HOST': '127.0.0.1', 'PORT': '5432', } }
Создать приложение
Проекты Django состоят из различных приложений, каждое из которых служит определенной цели.
Чтобы создать приложение под названием Pages:
python manage.py startapp pages
Это создаст папку pages внутри проекта с собственными models.py, views.py и т.д.
Теперь зарегистрируйте приложение в файле myproject/settings.py в разделе INSTALLED_APPS:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'pages', # new ].
Теперь приложение готово к использованию.
Определить модели
Модели представляют собой данные для нашего приложения и определяются как классы в файле models.py приложения.
Для нашего приложения ”Страницы” мы можем создать простую модель HomePage:
# pages/models.py from django.db import models class HomePage(models.Model): title = models.CharField(max_length=200) content = models.TextField().
models.Model - это Django-модель, которая будет сохранена в базе данных. models.CharField - для мелкого и крупного текста. models.TextField - для крупного текстового содержимого.
Мы также создадим файл миграции для создания модели в базе данных:
python manage.py makemigrations
Это создаст файл миграции для создания таблицы HomePage.
Затем запустите миграции с помощью:
python manage.py migrate
Теперь модель HomePage существует в базе данных!
Создание представлений
Представления - это функции Python, которые обрабатывают запросы и возвращают ответы.
В pages/views.py мы можем создать простое представление для отображения шаблона:
# pages/views.py from django.shortcuts import render def home(request): return render(request, 'home.html', {'title':'My Home Page'}).
Это домашнее представление будет искать шаблон под названием home.html и рендерить его, передавая заголовок в качестве контекста.
Настройка URL-адресов
URL-адреса определяют, какое представление обрабатывает каждый запрос, основываясь на пути URL-адреса запроса.
В файле myproject/urls.py добавьте путь для нашего домашнего представления:
from django.contrib import admin from django.urls import path from pages.views import home urlpatterns = [ path('admin/', admin.site.urls), path('', home, name='home'), ].
Это отображает запросы к URL-адресу корня сайта ’’ на домашний вид.
Позже мы можем добавить другие пути для дополнительных видов.
Шаблонизация с помощью HTML
Django использует язык шаблонов, Django Template Language (DTL), для создания динамического HTML.
Шаблоны помещаются в папку templates в каждом приложении. Мы можем создать templates/home.html:
<!DOCTYPE HTML> <HTML> <head> <title>{{ title }} </title> </head> <body> <h1>{{ title }}</h1>; {{ content }} </body> </html>
Шаблонные теги {{ title }} и {{ content }} отображают значения, переданные из представления.
Подача статических файлов
Статические файлы, такие как CSS, JS и изображения, должны находиться в папке static в каждом приложении.
В файле settings.py добавьте:
STATIC_URL = '/static/' STATICFILES_DIRS = [BASE_DIR / 'static'].
Это указывает Django, где искать статические файлы.
В шаблоне загружайте статические файлы с помощью:
{% load static %} <link rel="stylesheet" href="{% static 'css/style.css' %}">
Работа с формами
Формы позволяют пользователям отправлять данные в приложение. Давайте создадим простую форму ContactForm.
В файле pages/forms.py:
from django import forms class ContactForm(forms.Form): name = forms.CharField() email = forms.EmailField() message = forms.CharField(widget=forms.Textarea).
Это создаст форму с полями для имени, электронной почты и сообщения.
В файле views.py:
from .forms import ContactForm def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): # Обрабатываем форму здесь return redirect('home') else: form = ContactForm() return render(request, 'contact.html', {'form': form}).
Здесь происходит отправка формы и проверка данных.
Шаблон contact.html может отображать форму:
<form method="POST"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit"> /form>.
Обязательно добавьте {% csrf_token %} для защиты от атак.
Интерфейс администратора
Django предоставляет встроенный интерфейс администратора для управления содержимым базы данных.
Сначала создайте суперпользователя:
python manage.py createsuperuser
Введите свое имя пользователя, электронную почту и пароль.
Теперь в файле pages/admin.py зарегистрируйте модели:
from django.contrib import admin from .models import HomePage admin.site.register(HomePage).
Теперь модель появится в интерфейсе администратора.
Запустите сервер dev и перейдите в /admin, чтобы войти в систему и управлять своими моделями.
Развертывание
Для развертывания онлайн настройте settings.py для использования в производстве и настройте WSGI с помощью веб-сервера, например Nginx и Gunicorn.
Некоторые ключевые производственные настройки:
DEBUG = False ALLOWED_HOSTS = ['www.mydomain.com'] STATIC_ROOT = BASE_DIR / ‘staticfiles’ SECURE_PROXY_SSL_HEADER
Для более быстрого развертывания используйте такие сервисы, как PythonAnywhere, Heroku, AWS Elastic Beanstalk для размещения проектов Django.
Заключение
На этом мы рассмотрели основы начала работы с Django! Мы создали новый проект, сделали простую модель и представления, отобразили шаблоны, обработали формы, обслужили статические файлы, настроили админку и подготовились к развертыванию.
Django очень мощный, и это лишь малая часть того, что он может делать. Некоторые другие области, которые стоит изучить дальше, включают:
Пользовательские модели пользователей и аутентификация Представления на основе классов для лучшего повторного использования кода Наборы запросов для доступа к данным и их фильтрации Тестирование с помощью модуля модульных тестов Django REST Framework для API Кэширование и оптимизация производительности
Официальная документация Django фантастична и содержит огромное количество информации. Не стесняйтесь развивать этот проект и превращать его в полноценное веб-приложение с дополнительными возможностями!
Если вам нравится моя работа и вы хотите помочь мне продолжать выпускать подобный контент, купите мне чашку кофе.
Если вы нашли этот пост интересным, найдите еще больше интересных постов на Learnhub Blog; мы пишем обо всем, что касается технологий, от облачных вычислений до Frontend Dev, кибербезопасности, искусственного интеллекта и блокчейна.