Развертывание бэкенда Django REST API на AZURE
Я пытался решить, как развернуть проект Django на Azure, следовал многим руководствам, но в данный момент я не могу указать, в чем проблема.
Развертывание с GitHub, развертывание прошло успешно, но я не могу получить доступ к своему приложению, в основном я получаю 404 или ошибку приложения при запуске через браузер. У меня есть локально перенесенная postgre, но я хочу использовать Azure postgre DB.
После того, как я побаловался с переменными ENV, я не могу подключиться к SHH, чтобы применить миграции, CONN CLOSE... и т.д. Так что я понятия не имею, с чего теперь начинать?
Я пробовал
руководства Microsoft, руководства из Интернета, просил помощи у ChatGPT. Я хочу развернуть свое приложение Django на Azure, но не знаю, как это сделать.Я попробовал ваш код и столкнулся с той же проблемой. Я нашел эту ссылку, которая объясняет, как развернуть и создать REST API с помощью Django REST Framework.
После настройки бэкенда REST API с помощью следующей команды:
django-admin startproject ProjectName
cd ProjectName
django-admin startapp ProjectName_api
Я сделал следующие изменения в todo/settings.py
и обратился к коду из приведенной выше ссылки .
ALLOWED_HOSTS = ["*"]
Удалите CORS_ALLOWED_ORIGINS
и CSRF_TRUSTED_ORIGINS
в файле settings.py .
Затем добавьте 'rest_framework'
и ваше приложение ('APIName_api'
) в раздел INSTALLED_APPS
в todo/settings.py
:
INSTALLED_APPS = [
'rest_framework',
'todo_api',
]
Далее создайте модель для списка дел в api/models.py
и определите сериализатор для преобразования Todo
модели в формат JSON в api/serializers.py
.
Определите представления API для списка, создания, обновления и удаления дел в api/views.py
. Затем определите шаблоны URL для конечных точек API в api/urls.py
:
urlpatterns = [
path('api/', TodoListApiView.as_view()),
path('api/<int:todo_id>/', TodoDetailApiView.as_view()),
]
Затем включите URL _api
в основной проект, отредактировав ProjectName/urls.py
:
urlpatterns = [ path('admin/', admin.site.urls), path('Url/', include('ProjectName_api.urls')), ]
Я следовал этой ссылке для интеграции Azure PostgreSQL DB с Django. Сначала создайте экземпляр Azure PostgreSQL, а строка подключения для базы данных Azure PostgreSQL будет иметь следующий формат:
dbname=<db_name> host=<db_host> port=5432 user=<db_user> password=<db_password>
Добавьте следующее в settings.py
и обновите указанные ниже параметры:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.environ.get('DBNAME'),
'HOST': os.environ.get('DBHOST'),
'USER': os.environ.get('DBUSER'),
'PASSWORD': os.environ.get('DBPASS'),
'OPTIONS': {'sslmode': 'require'},
}
}
Перенесите базу данных, создайте суперпользователя и запустите сервер локально для тестирования. После этого выложите код на Git.Вы можете протестировать свой API на todos/api
.
Создайте веб с включенным GitHub Actions, настроив непрерывное развертывание и базовую аутентификацию. Обязательно добавьте параметры PostgreSQL в переменные среды azure web app.
Обновите ваш .yml
файл следующим образом:
- name: Run Django makemigrations and migrate
run: |
source venv/bin/activate
python manage.py makemigrations
python manage.py migrate
env:
DBNAME: postgres
DBHOST: AzureHost
DBUSER: postgres
DBPASS: postgres
- name: Create Django superuser
run: |
source venv/bin/activate
python manage.py createsuperuser --noinput --username admin1 --email admin@example.com
env:
DBNAME: postgres
DBHOST: AzureHost
DBUSER: postgres
DBPASS: postgres
Вывод:
Наконец-то мне удалось развернуть DRF (Django Rest Framework) в azure с базой данных SQL-сервера. Следуя этому руководству от MS. .