Текст задания из LMS
Вам необходимо самостоятельно создать Django проект и добавить его в Git.
Создание проекта:
- Создайте новый Python проект.
- Установите фреймворк Django.
- Создайте структуру Django проекта с помощью команды в консоли.
Настройка переменных окружения:
- Создайте файл
.envв корне проекта и добавьте переменныеSECRET_KEY,DEBUGиALLOWED_HOSTS. - Установите библиотеку
django-environдля работы с переменными окружения. - Считайте переменные
SECRET_KEY,DEBUGиALLOWED_HOSTSиз.envфайла вsettings.py.
Настройка базы данных:
- Добавьте в
.envфайл настройки для подключения к MySQL. - Реализуйте в
settings.pyвозможность выбора между SQLite и MySQL в зависимости от переменнойMYSQLв.envфайле.
Создание и регистрация приложения:
- Создайте новое приложение в вашем проекте Django.
- Зарегистрируйте приложение в настройках проекта (
settings.py).
Реализация представления и маршрута:
- Определите простое представление, которое будет возвращать заголовком текст «Hello, <your_name>».
- Определите URL-маршрут к вашему представлению внутри приложения.
- Подключите маршруты вашего приложения к основному файлу
urls.pyпроекта.
Тестирование:
- Запустите локальный сервер и перейдите по созданному URL-адресу для проверки корректности реализации.
Фиксация зависимостей:
- Зафиксируйте текущие версии всех зависимостей в файле
requirements.txt.
Git:
- Запуште проект в git репозиторий и прикрепите как решение ссылку на него.
Подготовка окружения
Шаг 1: Создание папки и виртуального окружения
# Создаём папку проекта
mkdir django-hw7
cd django-hw7
# Создаём виртуальное окружение
python -m venv venv
# Активируем (Windows)
venv\Scripts\activate
# Проверяем, что окружение активировано (должно быть (venv))
# (venv) C:\...>
Шаг 2: Установка зависимостей
# Основные пакеты
pip install django django-environ
# Если планируете MySQL (опционально — для тестирования)
pip install mysqlclient # или PyMySQL
mysqlclient требует установленных системных библиотек MySQL. На Windows без MySQL Server установленного возможны ошибки компиляции. Альтернатива — использовать PyMySQL с настройкой в __init__.py. Подробности: pypi.org/project/mysqlclient
Шаг 3: Создание Django-проекта
# Создаём структуру проекта (точка = в текущей папке)
django-admin startproject config .
# Создаём приложение
python manage.py startapp myapp
Шаг 4: Создание .env файла
# .env — создаём в корне проекта (рядом с manage.py)
SECRET_KEY=django-insecure-your-very-secret-key-change-this-in-production
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# Настройки MySQL (используются при MYSQL=True)
MYSQL=False
DB_NAME=mydatabase
DB_USER=root
DB_PASSWORD=yourpassword
DB_HOST=localhost
DB_PORT=3306
.env в .gitignore, чтобы не публиковать секретный ключ в репозитории:
# .gitignore
.env
venv/
__pycache__/
*.pyc
db.sqlite3
Пошаговое решение
1. Настройка settings.py с django-environ
Связь с теорией: settings.py — BASE_DIR, DATABASES, DEBUG
# config/settings.py
from pathlib import Path
import environ
# Инициализируем environ
env = environ.Env(
DEBUG=(bool, False) # тип и значение по умолчанию
)
BASE_DIR = Path(__file__).resolve().parent.parent
# Читаем .env файл
environ.Env.read_env(BASE_DIR / '.env')
# Безопасность — из .env
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=['localhost', '127.0.0.1'])
2. Настройка базы данных: SQLite или MySQL
# config/settings.py — добавляем после ALLOWED_HOSTS
# Выбор базы данных через переменную MYSQL в .env
USE_MYSQL = env.bool('MYSQL', default=False)
if USE_MYSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': env('DB_NAME'),
'USER': env('DB_USER'),
'PASSWORD': env('DB_PASSWORD'),
'HOST': env('DB_HOST', default='localhost'),
'PORT': env('DB_PORT', default='3306'),
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
3. Регистрация приложения в INSTALLED_APPS
Связь с теорией: INSTALLED_APPS в settings.py
# config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # регистрируем приложение
]
4. View с приветствием
Связь с примерами: Пример 3: Простое view
# myapp/views.py
from django.http import HttpResponse
def hello(request):
# Замените "YourName" на своё имя
return HttpResponse("<h1>Hello, YourName</h1>")
5. URL-маршрут в приложении
Связь с теорией: urls.py в структуре проекта
# myapp/urls.py — создать новый файл
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello, name='hello'),
]
6. Подключение маршрутов к корневому urls.py
# config/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')), # подключаем маршруты myapp
]
7. Применение миграций и запуск сервера
# Применяем начальные миграции (создаёт таблицы auth, sessions, admin)
python manage.py migrate
# Запускаем сервер
python manage.py runserver
Перейдите на http://127.0.0.1:8000/hello/ — должно отобразиться «Hello, YourName».
8. Фиксация зависимостей
# Создаём requirements.txt
pip freeze > requirements.txt
Файл будет содержать что-то вроде:
asgiref==3.8.1
Django==5.0.6
django-environ==0.11.2
sqlparse==0.5.0
9. Git: инициализация и публикация
# Инициализируем репозиторий
git init
# Создаём .gitignore (если ещё не создан)
# Добавляем .env, venv/, __pycache__/, db.sqlite3
# Добавляем файлы
git add .
git commit -m "feat: initial Django project with .env configuration"
# Создаём репозиторий на GitHub и добавляем remote
git remote add origin https://github.com/yourusername/django-hw7.git
git push -u origin main
Проверка в VS Code
Запуск сервера через терминал VS Code
- Откройте папку проекта:
File → Open Folder... - Откройте терминал:
Terminal → New Terminalили Ctrl+` - Активируйте venv:
venv\Scripts\activate - Запустите сервер:
python manage.py runserver - Нажмите Ctrl + клик по ссылке в терминале или откройте браузер вручную
Настройка launch.json для Django в VS Code
Файл .vscode/launch.json позволяет запускать Django сервер через F5 и использовать точки останова (breakpoints).
{
"version": "0.2.0",
"configurations": [
{
"name": "Django: runserver",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": ["runserver"],
"django": true,
"justMyCode": true
}
]
}
Создайте файл .vscode/launch.json с этим содержимым, затем нажмите F5 — сервер запустится в режиме отладки.
Использование точек останова
- Откройте
myapp/views.py. - Кликните слева от номера строки в теле функции
hello— появится красная точка (breakpoint). - Нажмите F5 для запуска в режиме отладки.
- Перейдите на
http://127.0.0.1:8000/hello/— выполнение остановится на точке останова. - В панели Variables можно изучить значения переменных (
request.method,request.GETи т.д.). - Нажмите F5 снова или F10 (step over) для продолжения.
Итоговая структура проекта
django-hw7/
├── .env ← переменные окружения (в .gitignore)
├── .gitignore
├── .vscode/
│ └── launch.json ← конфигурация отладки
├── config/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py ← настройки с django-environ
│ ├── urls.py ← корневые маршруты
│ └── wsgi.py
├── myapp/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations/
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py ← маршруты приложения (создан вручную)
│ └── views.py ← view hello()
├── manage.py
├── requirements.txt
└── venv/ ← в .gitignore
Чеклист перед сдачей
- Django-проект создан:
manage.py,config/,myapp/присутствуют - Файл
.envсуществует и содержит SECRET_KEY, DEBUG, ALLOWED_HOSTS .envдобавлен в.gitignore(не должен попасть в репозиторий)- В
settings.pyиспользуетсяdjango-environдля чтения переменных - Реализован выбор БД: SQLite (MYSQL=False) или MySQL (MYSQL=True)
'myapp'присутствует вINSTALLED_APPS- View
helloвозвращает «Hello, <your_name>» myapp/urls.pyсоздан и подключён черезinclude()- Сервер запускается:
python manage.py runserverбез ошибок - URL
http://127.0.0.1:8000/hello/возвращает нужный текст - Файл
requirements.txtсгенерирован командойpip freeze - Проект запушен в Git-репозиторий