Эта статья была изначально опубликована в: https://render.com/docs/deploy-django. . Рекомендуется прочитать связанную версию с улучшенным выделением синтаксиса.
Это руководство продемонстрирует, как вы можете создать местный Джанго Окружающая среда разработки, создать простой вид и развернуть его на Оказывать Отказ Приложение будет настроено на использование рендеринга PostgreSQL база данных и будет использовать Поэзия Чтобы управлять виртуальными средами и проектами Python и зависимостями проекта, хотя и не являются требованиями для развертывания проекта Django на Render.
Готовый код для этого примера доступен на Гадость и приложение приложения можно просмотреть здесь Отказ
В этом руководстве начинается с установки голых костей и объясняет все необходимые модификации кода, поэтому он должен быть простым, чтобы адаптировать его к любой пользовательской конфигурации в вашей существующей кодовой базе Django.
Создать проект Django
На этом этапе мы создадим местную среду разработки и создаем базовую структуру проекта.
Мы предположим, что наш проект называется MySite
и последовательно используют его по всему коду. Не стесняйтесь выбирать другое имя, хотя это должно быть Действительное имя пакета Python Отказ
Установите поэзию
Если у вас нет установленной поэзии, следуйте поэзии Инструкции по установке Для вашей операционной системы. В большинстве случаев вам просто нужно будет выполнить следующее:
MacOS/Linux:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
Окна в PowerShell:
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python
Вам может потребоваться перезапустить свою оболочку, чтобы загрузить Поэзия
команда в ваш Путь
Отказ Чтобы убедиться, что установка была успешной, попробуйте запустить Поэзия --version
Отказ
Создать структуру проекта
- Использовать Поэзия Чтобы инициализировать каталог проекта:
$ poetry new mysite Created package mysite in mysite $ cd mysite $ ls README.rst mysite pyproject.toml tests # We don't need the code for our package that was generated by Poetry, so: $ rm -rf mysite tests
- В
pyproject.toml
Убедитесь, что требование версии Python включает в себя версию3.7
, который доступен на визуализации.
[tool.poetry.dependencies] python = "^3.7"
- Добавить Django как зависимость.
$ poetry add django
- Создайте проект Django для вашего приложения.
$ poetry run django-admin startproject mysite .
Вы должны в конечном итоге со следующей структурой каталога:
$ tree . ├── README.rst ├── manage.py ├── mysite │ ├── __init__.py │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── poetry.lock └── pyproject.toml 1 directory, 9 files
На данный момент вы должны иметь полностью функциональные леса для вашего нового приложения Django! Чтобы проверить, вы можете запустить сервер разработки.
$ poetry run ./manage.py runserver
Создайте посадочную страницу Hello World
В этом разделе вы создадите простое приложение Django со статическим видом, шаблоном и приведенным примером статическим файлом, который демонстрирует основные шаги в создании страницы с использованием Django. Если вам интересно только изучение того, как развертывать образец проекта Django для рендеринга, вы можете пропустить Обновите ваше приложение для рендера Развертывание и разверните пустой проект.
Если вы хотите построить что-то более сложное, настоятельно рекомендуется читать официальный Написание вашего первого приложения Django руководство.
Создайте приложение Render
Теперь, когда ваша примерная среда (проект Django ) готова, вы готовы начать работать над Приложение сам.
Джанго Проекты коллекции Приложения проводятся вместе, чтобы сформировать сайт. Django предоставляет ряд встроенных приложений, с Админ сайт Быть хорошо известным примером.
- Чтобы создать свое приложение, запустите следующую команду из корневого каталога вашего проекта:
python manage.py startapp render
Это создаст каталог с именем оказывать
со следующим содержанием:
$ tree render render ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ ├── __init__.py ├── models.py ├── tests.py └── views.py 1 directory, 7 files
- Вам также нужно сообщить Django о своем новом приложении. Открыть
mysite/settings.py
Найти определениеStall_apps
Установка и добавьте ссылку наRenderconfig
Класс в начале списка:
# https://docs.djangoproject.com/en/3.0/ref/settings/#installed-apps INSTALLED_APPS = [ 'render.apps.RenderConfig', 'django.contrib.admin', 'django.contrib.auth', ... ]
Напишите свой первый взгляд
- В
Render/просмотреть .py
Добавьте следующий код Python:
from django.shortcuts import render def index(request): return render(request, 'render/index.html', {})
Это один из самых простых просмотров, возможных в Джангу. Это делает Render/index.html
Шаблон, который мы создадим на более позднем этапе.
- Создать
Render/Urls.py
Файл и добавить следующий код:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
Этот файл скажет Django, что вы хотите, чтобы ваш Индекс
Просмотр быть доступным из корневого URL вашего приложения.
- Настройте root Проект
URLPatterns
указать наURL
модульоказывать
применение. ОткрытьMySite/URLS.PY
Добавьте импорт дляdjango.urls.include.
ивключить
URL-адреса вашего приложения:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('render.urls')), ]
- Создать
Render/index.html
Шаблон, который вы ссылались ранее. Создайте новый файлВизуализация/шаблоны/рендеринг/index.html
и добавьте следующие HTML:
Hello Django on Render! Hello World!
- Добавьте статический файл в ваше приложение. Скачайте это изображение и сохраните его как
Render/Static/Render/Render.png
:
- В вашем шаблоне загрузите
статический
Модуль и ссылка на загруженное изображение:
- Теперь вы можете подтвердить ваше приложение работает со следующей командой:
$ python manage.py runserver
Обновите ваше приложение для рендера
Для того, чтобы ваш проект Django будет готов к производству, вам нужно будет внести несколько корректировок в настройках приложения. Вы обновите свой проект, чтобы использовать Render PostgreSQL База данных Вместо базы данных SQLite и настроить Whitenoise служить вашим статическим файлам.
Пойти готово к производству
Перед развертыванием любого серьезного применения на производственную среду необходимо убедиться, что она правильно закреплена и настроена. Django Документация предоставляет полезное контрольный список развертывания , который мы будем следовать на этом шаге.
- Открыть
mysite/settings.py
и найти декларацию оSecret_key
параметр. Мы не хотели хранить производственные секреты в исходном коде, поэтому мы принесем его от переменной окружающей среды, которую мы создадим позже:
# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = os.environ.get('SECRET_KEY', default='your secret key')
- Найти объявление о
Отладка
параметр. Этот параметр должен Никогда быть установленным наИстинный
в производственной среде. Вы можете обнаружить, если вы работаете на рендере, проверяя, еслиОказывать
Переменная среды присутствует в Прикладная среда Отказ
# SECURITY WARNING: don't run with debug turned on in production! DEBUG = 'RENDER' not in os.environ
- Когда
Отладка
Django не будет работать без подходящего значения дляРазрешенные_ходки
Отказ Вы можете получить имя вашего веб-сервиса изRender_External_hostName
Переменная среды, которая автоматически устанавливается на рендеринг.
# https://docs.djangoproject.com/en/3.0/ref/settings/#allowed-hosts ALLOWED_HOSTS = [] RENDER_EXTERNAL_HOSTNAME = os.environ.get('RENDER_EXTERNAL_HOSTNAME') if RENDER_EXTERNAL_HOSTNAME: ALLOWED_HOSTS.append(RENDER_EXTERNAL_HOSTNAME)
Если вы добавите пользовательский домен в свое приложение Render, не забудьте добавить свой новый домен в список.
Настроить Django для PostgreSQL
Для удобства мы добавим DJ-база данных-URL Пакет, который позволяет нам указывать базы данных в Django, используя соединительные строки. Render базы данных автоматически предоставляют соединительные строки на их панели управления, которые мы предоставим нашему веб-сервису через База данных_URL
Переменная среды. Нам также нужно будет добавить psycopg2 к проекту.
- Запустите следующую команду, чтобы добавить необходимые зависимости в ваш проект:
$ poetry add dj-database-url psycopg2-binary
- В
mysite/settings.py
Найти объявление оБазы данных
Настройка и изменение его, чтобы выглядеть следующим образом:
# Don't forget to import dj-database-url at the beginning of the file import dj_database_url
# Database # https://docs.djangoproject.com/en/3.0/ref/settings/#databases DATABASES = { 'default': dj_database_url.config( # Feel free to alter this value to suit your needs. default='postgresql://postgres:postgres@localhost:5432/mysite', conn_max_age=600 ) }
Статические файлы
Сайты, как правило, нужно обслуживать дополнительные файлы, такие как изображения, JavaScript и CSS. В Django эти файлы называются Статические файлы И это обеспечивает выделенный модуль для сбора их в одно место для обслуживания в производстве.
Встроенный модуль поддерживает только перемещение файлов из одного места в другое, полагаясь на веб-серверы, такие как Apache или Nginx служить им для конечных пользователей. На визуализации веб-сервер, облицовочный Интернет предоставляется по умолчанию, и нам нужен способ размещать статические файлы, используя его. На этом шаге мы настроим Whitenoise Это очень популярное решение для этой проблемы. Следующие инструкции представляют собой краткую краткую процедуру, описанную в Whitenoise Documentation Отказ
- Добавьте белоуз в качестве зависимости (добавление Brotli Поддержка не является обязательной, но рекомендуется):
poetry add 'whitenoise[brotli]'
- Открыть
mysite/settings.py
НайдитеПромежуточное программное обеспечение
Список, и добавьте промежуточное программное обеспечение для Whitenoise сразу послеSecurityMiddleware
:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', ... ]
- Найдите раздел, где настраиваются статические файлы. Примените следующие модификации:
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ # This setting tells Django at which URL static files are going to be served to the user. # Here, they well be accessible at your-domain.onrender.com/static/... STATIC_URL = '/static/' # Following settings only make sense on production and may break development environments. if not DEBUG: # Tell Django to copy statics to the `staticfiles` directory # in your application directory on Render. STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # Turn on WhiteNoise storage backend that takes care of compressing static files # and creating unique names for each version so they can safely be cached forever. STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Создать сценарий сборки
- Нам нужно запустить ряд команд для создания нашего приложения. Мы можем достичь этого с помощью сценария сборки. Создать сценарий под названием
build.sh
В корне вашего репозитория:
#!/usr/bin/env bash # exit on error set -o errexit poetry install python manage.py collectstatic --no-input python manage.py migrate
Убедитесь, что скрипт исполняется, прежде чем проверять его в Git:
$ chmod a+x build.sh
We will configure Render to call this script on every push to the Git repository.
- Мы собираемся запустить наше приложение с Боевик Отказ Добавьте зависимость в ваш проект:
poetry add gunicorn
Сделайте все изменения и подтолкните их к вашему репозитории GitHUB. Теперь ваше приложение готово быть развернутым на рендере!
Развертывание для рендера
Есть два способа развертывания вашего приложения на Render, либо по Объявляя свои услуги в своем репозитории используя Render.yaml
Файл или вручную настроив свои сервисы с помощью приборной панели. В этом руководстве мы будем ходить по обоим вариантам.
Используйте Render.yaml для развертываний
- Создать файл с именем
Render.yaml
в корне вашего каталога. Файл определит ваше django Веб-сервис и База данных используется вашим приложением. Не забудьте совершить и подтолкнуть его к удаленному репозиторию.
databases: - name: mysite databaseName: mysite user: mysite services: - type: web name: mysite env: python buildCommand: "./build.sh" startCommand: "gunicorn mysite.wsgi:application" envVars: - key: DATABASE_URL fromDatabase: name: mysite property: connectionString - key: SECRET_KEY generateValue: true - key: WEB_CONCURRENCY value: 4
- На приборной панели рендеринга перейдите к Ямл Страница и нажмите
Новый от YAML
кнопка. Выберите репозиторий вашего приложения (дайте разрешение на получение доступа к этому, если вы еще нешли) и нажмитеУтвердить
на следующем экране.
Вот и все! Ваше приложение будет жить на вашем .onrender.com
URL, как только сборка заканчивается.
Если вы пропустили Создайте страницу Hello World Page Раздел, вы увидите Не найден
Ошибка при посещении вашего сайта. Вы можете подтвердить, что ваше развертывание прошло успешно, посетив приборную панель администратора в /admin.
Ручное развертывание
Создать новый PostgreSQL База данных на рендеринг. Обратите внимание на вашу базу данных Внутренняя соединительная строка ; Вам понадобится позже.
Создать новый Веб-сервис , указывая на его репозиторий вашего приложений (дайте разрешение доступа к этому, если вы еще не имеете).
Выберите
Python
Для окружающей среды и установить следующие свойства:
./build.sh. | Создать команду |
Gunicorn Mysite.wsgi: применение | Команда запуска |
- Добавьте следующие переменные среды под Продвинутый :
Database_url. | Внутренняя строка подключения для базы данных, которую вы создали выше |
СЕКРЕТНЫЙ КЛЮЧ | Нажмите Generate, чтобы получить безопасное случайное значение |
Web_concurnence. | 4 |
Вот и все! Сохраните свой веб-сервис для развертывания приложения Django на Render. Это будет жить на вашем .onrender.com
URL, как только сборка заканчивается.
Создать учетную запись администратора Django
Как только ваше приложение будет жить, создайте новый Администрация Django Admin Запустив следующую команду в оболочке Render:
$ ./manage.py createsuperuser
Оригинал: “https://dev.to/render/deploying-your-django-3-app-239a”