Запуск нового проекта Django с базой данных PostgreSQL
Для начала зайдите в свой терминал и создайте новую папку с помощью команды mkdir
. Это папка, в которой будет храниться вся работа над проектом, над которым вы работаете.
Затем перейдите в эту папку, чтобы создать виртуальную среду.
1. Создайте виртуальную среду
Работа в виртуальной среде гарантирует, что вы изолируете установки Python и связанные пакеты pip, позволяя вам устанавливать и управлять собственным набором пакетов, которые не зависят от пакетов, предоставляемых системой или используемых другими проектами. В зависимости от виртуальной среды, которую вы выбрали для установки на свой компьютер, команда для создания виртуальной среды будет различаться.
В этом случае мы будем использовать virtualenv.
virtual — это имя моей виртуальной среды.
$ virtualenv virtual
Активируйте виртуальную среду, чтобы работать в виртуальной среде:
$ source virtual/bin/activate
2. Установите Джанго
Теперь вы можете установить Django в это выделенное рабочее пространство.
# This command will install the most recent version of django.
(virtual) $ pip install django
Чтобы установить конкретную версию django, укажите ее следующим образом (замените число после знака == на версию, которую вы хотите установить):
(virtual) $ pip install django==2.2.11
Чтобы упростить совместную работу и отслеживать все пакеты (и их версии), которые у вас есть в настоящее время в вашей виртуальной среде, закрепите свои зависимости с помощью следующей команды. Это создаст файл requirements.txt. Вы можете запускать эту команду по отдельности, когда устанавливаете больше внешних пакетов, чтобы обновить список зависимостей.
(virtual) $ pip freeze > requirements.txt
3. Создайте проект и приложение django
Django состоит из двух основных частей; проект и приложение
- Project - пакет, представляющий собой весь веб-сайт. Каталог проекта содержит настройки для всего сайта. В проекте может быть много приложений. Создайте проект с помощью следующей команды:
(virtual) $ django-admin startproject <project-name>
Структура вашей папки будет выглядеть так:
example/
│
├── project/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
└── manage.py
- App - подмодуль проекта, реализующий определенный функционал. Например, на веб-сайте может быть приложение для публикации и еще одно приложение для оплаты. Создайте приложение django с помощью следующей команды:
(virtual) $ python manage.py startapp <app-name>
Будет добавлена новая папка. Структура вашей папки будет выглядеть так:
example/
│
├── app/
│ │
│ ├── migrations/
│ │ └── __init__.py
│ │
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
│
├── project/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
└── manage.py
4. Создайте файлы gitignore и .env
Перед добавлением git в свой проект или перед тем, как вы сможете зафиксировать сделанные вами изменения, есть некоторые файлы, которые вы не хотите отслеживать.
Файл .gitignore указывает git не отслеживать эти файлы или любые изменения, которые вы в них вносите.
example/
│
├── app/
│ │
│ ├── migrations/
│ │ └── __init__.py
│ │
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
│
├── .gitignore
├── .env
├── .env.example
|
├── project/
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
└── manage.py
Это некоторые из файлов, которые вы добавляете в gitignore. Вы можете добавить или опустить что-либо. Например, у меня обычно есть файл .txt
, который я использую для «черновой работы», который я добавляю в gitignore.
virtual/
.env
*.pyc
db.sqlite3
migrations/
media/*
Причина добавления папки миграции в gitignore — минимизировать конфликты слияния и ошибки в продакшене.
Ваш проект также содержит конфиденциальные данные, которые вы не хотите отслеживать. Такие данные, как ваш секретный ключ django или пароль вашей базы данных. Эта информация хранится в файле .env
, который затем помещается в файл gitignore.
При совместной работе создайте файл .env.example
, содержащий примеры данных, которые другие соавторы могут заменить своими собственными значениями для локального запуска вашего проекта. Таким образом, никто не фиксирует свои учетные данные среды, и вам не нужно менять значения каждый раз, когда вы извлекаете проект.
Содержимое .env может выглядеть так:
SECRET_KEY=generate-a-key
DEBUG=True
DB_NAME=db-name
DB_USER=username
DB_PASSWORD=your-password
DB_HOST=127.0.0.1
MODE=dev
ALLOWED_HOSTS=*
DISABLE_COLLECTSTATIC=1
Затем вы можете сослаться на эти учетные данные в файле project/settings.py
следующим образом:
from decouple import config, Csv #add this to the top
MODE=config("MODE")
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv())
5. База данных и settings.py
База данных по умолчанию, используемая Django из коробки, — SQLite. Для более сложных проектов вам потребуется более мощная база данных, такая как PostgreSQL.
Некоторые операционные системы могут поставляться с предустановленной программой potgres, или вам может потребоваться ее установка.
Чтобы проверить, установлен ли у вас PostgreSQL, запустите команду which psql
.
- Если Postgres не установлен, вывода не будет. Вы просто получаете приглашение терминала, готовое принять другую команду:
> which psql
>
- Если Postgres установлен, вы получите ответ с указанием пути к месту установки Postgres:
> which psql
/usr/bin/psql
Для поддержки базы данных postgres вам необходимо установить psycopg2
и две другие библиотеки. psycopg2 — это адаптер базы данных, который подключает базы данных к python.
pip install psycopg2
pip install dj-database-url
pip install python-decouple
Внесите следующие изменения в файл project/settings.py
.
import dj_database_url
INSTALLED_APPS = [
'application', #new
'django.contrib.admin',
...
]
# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
if config('MODE')=="dev":
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', #changed database from sqlite to postgresql
'NAME': config('DB_NAME'),
'USER': config('DB_USER'),
'PASSWORD': config('DB_PASSWORD'),
'HOST': config('DB_HOST'),
'PORT': '',
}
}
else:
DATABASES = {
'default': dj_database_url.config(
default=config('DATABASE_URL')
)
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
6. Отслеживание версий с помощью git
Инициализируйте контроль версий с помощью команды git init
. Затем добавьте и зафиксируйте свои изменения.
7. Тест
Вы будете использовать эту команду в любое время, когда вам нужно протестировать свой код в браузере. Порт по умолчанию — 127.0.0.1:8000.
Вы должны увидеть такой вывод в своем браузере:
На этом этапе вы закончили настройку каркаса для своего веб-сайта Django и можете приступить к реализации своих идей, добавляя модели, представления и шаблоны.
Сводка команд
Команды в порядке выполнения:
Команды | Описание |
$ virtualenv virtual | настроить виртуальную среду |
$ source env/bin/activate | активировать виртуальную среду |
(virtual) $ pip install django | Установите django внутри виртуальной среды |
(virtual) $ django-admin startproject <projectname> | настроить проект Django |
(virtual) $ python manage.py startapp <appname> | настроить приложение Django |
(virtual) $ pip install psycopg2 | подключить базу данных к python |
(virtual) $ pip install dj-database-url | |
(virtual) $ pip install python-decouple | |
(virtual) $ pip freeze > requirements.txt | зависимости и версии выводов |
Initialize and commit to git | |
(virtual) $ python manage.py runserver | посмотреть сайт на 127.0.0.1:8000 |
Вывод
В этой статье мы рассмотрели этапы запуска нового проекта Django с базой данных PostgreSQL, а также общие команды терминала, используемые для веб-разработки Django.