DevGang
Авторизоваться

Создание веб-приложения с помощью Django

Django - это мощный веб-фреймворк для Python, позволяющий быстро создавать веб-приложения. В этом руководстве мы создадим базовое приложение Django с нуля. Мы рассмотрим:

  • Установку Django
  • Создание проекта
  • Настройку базы данных
  • Создание приложения
  • Определение моделей
  • Создание представлений
  • Настройку URL-адресов
  • Создание шаблонов с помощью HTML
  • Обслуживание статичных файлов
  • Работу с формами
  • Интерфейс администратора
  • Развертывание

К концу курса вы получите простое веб-приложение, работающее с использованием широких возможностей Django. Давайте начнем!

Установка 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 приложения.

Для нашего приложения Pages мы можем создать простую модель главной страницы (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

В результате будет сгенерирован файл миграции для создания таблицы домашней страницы.

Затем запустите миграции с помощью:

python manage.py migrate

Модель домашней страницы теперь существует в базе данных!

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

Представления - это функции 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 будет искать шаблон с именем home.html и отображать его, передавая заголовок в качестве контекста.

Настройка URL-адресов

URL-адреса определяют, какое представление обрабатывает каждый запрос, на основе пути URL-адреса запроса.

В файле myproject/urls.py добавьте путь для нашего представления home:

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-адресу корня сайта привязываются к представлению home.

Позже мы можем добавить другие пути для дополнительных представлений.

Создание шаблонов с помощью HTML

Для генерации динамического HTML в Django используется язык шаблонов, называемый Django Template Language (DTL).

Шаблоны помещаются в папку templates в каждом приложении. Мы можем создать файл templates/home.html:

<!-- templates/home.html -->
<!DOCTYPE html>

<html>
<head>
  <title>{{ title }}</title>
</head>
<body>
  <h1>{{ title }}</h1>
  <p>{{ content }}</p>
</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)

При этом создается форма с полями name, email и message.

В файле views.py:

from .forms import ContactForm

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # Process form here
            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

Введите имя пользователя, e-mail и пароль.

Теперь в файле pages/admin.py зарегистрируйте модели:

from django.contrib import admin
from .models import HomePage
admin.site.register(HomePage)

Теперь модель появится в интерфейсе администратора.

Запустите dev-сервер и перейдите по адресу /admin, чтобы войти в систему и управлять своими моделями.

Развертывание

Для развертывания в режиме онлайн настройте settings.py для использования в производстве и настройте WSGI с помощью веб-сервера, например Nginx и Gunicorn.

Некоторые ключевые параметры производства:

  1. DEBUG = False
  2. ALLOWED_HOSTS = [‘www.mydomain.com‘]
  3. STATIC_ROOT = BASE_DIR / ‘staticfiles’
  4. SECURE_PROXY_SSL_HEADER

Для ускорения развертывания используйте такие сервисы, как PythonAnywhere, Heroku, AWS Elastic Beanstalk для размещения проектов Django.

Заключение

На этом основы начала работы с Django исчерпаны! Мы создали новый проект, сделали простую модель и представления, отобразили шаблоны, обработали формы, обслужили статические файлы, настроили админку и подготовились к развертыванию.

Django очень мощный, и это лишь малая часть того, что он может сделать. К числу других областей, которые следует изучить подробнее, относятся:

  • Пользовательские модели пользователей и аутентификация
  • Представления на основе классов для более эффективного повторного использования кода
  • Наборы запросов (QuerySets) для доступа к данным и их фильтрации
  • Тестирование с помощью модульных тестов
  • Django REST Framework для работы с API
  • Кэширование и оптимизация производительности

Официальная документация по Django является фантастической и содержит огромное количество информации. Не стесняйтесь развивать этот проект и превращать его в полноценное веб-приложение с дополнительными возможностями!

Ресурсы

Источник:

#Python #Django
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу