Поделиться через


Создание приложения Django и PostgreSQL и развертывание в Azure

В этой статье описано, как взаимодействовать с GitHub Copilot для создания локального веб-приложения Django, выполняющего операции CRUD в базе данных PostgreSQL. Далее вы узнаете, как взаимодействовать с GitHub Copilot для Azure для развертывания веб-приложения и базы данных в Службе приложений Azure и гибком сервере Azure PostgreSQL (а также в нескольких вспомогательных службах Azure).

Создаваемое приложение — это тривиальное приложение для управления контактами, которое включает операции CRUD с архитектурой стиля списка подробных сведений.

Замечание

Использование крупной языковой модели (LLM) для создания приложения может привести к несогласованным результатам. Результаты зависят от модели LLM, инструкций и т. д. Основное внимание в этом руководстве заключается в том, чтобы помочь вам понять, как получить лучшие результаты. Однако каждый раз, когда вы проходите этот пример, вы получаете (потенциально) разные результаты.

Предпосылки

Это важно

GitHub Copilot — это отдельная подписка, управляемая GitHub. Вопросы о подписках и поддержке GitHub Copilot см. в статье "Начало работы с планом GitHub Copilot".

Подготовка сеанса чата

  1. В Visual Studio Code нажмите кнопку "Переключатель чата" в строке заголовка или нажмите клавиши CTRL+ALT+i , чтобы открыть окно чата. Используйте значок "Создать чат" для создания нового сеанса чата.

  2. В области чата выберите Agent режим. На момент написания этой статьи дает Claude Sonnet 4 лучшие результаты. Используйте лучшую модель, доступную для создания кода.

Проверка конфигурации

Убедитесь, что средства CLI и Visual Studio Code обновлены, правильно настроены и работают правильно, чтобы улучшить результаты.

  1. В новом чате введите следующий запрос:

    
    I want to create a new Django website that stores data in PostgreSQL. Then, I'll want
    to deploy that new website to Azure. Do I have everything installed on my local 
    computer that you will need to perform these tasks?
    
    

    GitHub Copilot попросит разрешение на выполнение ряда проверок командной строки, чтобы обеспечить наличие средств, а также наиболее актуальных версий этих средств, установленных.

  2. В терминале обновите Azure CLI с помощью команды az --upgrade.

  3. Установите безпарольное расширение коннектора службы для Azure CLI в терминале с помощью команды az extension add --name serviceconnector-passwordless --upgrade

  4. В Visual Studio Code установите для терминала по умолчанию значение Git Bash. Перейдите к параметрам параметров файла >> , а затем в поле "Параметры поиска" введите "Профиль по умолчанию: Windows" и выберите "Git Bash". Чтобы этот параметр вступил в силу, может потребоваться перезапустить Visual Studio Code.

    Замечание

    Использование Git Bash не является строго обязательным, но на момент написания этой статьи он дает лучшие результаты.

  5. В Visual Studio Code используйте расширение PostgreSQL для Visual Studio Code (предварительная версия) и перейдите в базу данных contacts.

  6. В Visual Studio Code используйте расширение Azure и убедитесь, что вы вошли в учетную запись Azure и подписку. При открытии расширения Azure на главной боковой панели вы сможете просматривать существующие подписки и ресурсы.

  7. Создайте папку для новых файлов приложения и откройте ее в Visual Studio Code в качестве рабочей области.

Настройка локальной базы данных

Хотя GitHub Copilot способен выполнять практически любую задачу разработки приложений, которую разработчики обычно выполняют, вы получите лучшие результаты, если выполнять некоторые задачи в небольших шагах. Чтобы улучшить результаты, создайте базу данных и настройте проверку подлинности и авторизацию перед работой с GitHub Copilot.

  1. Создайте новый чат и используйте следующую команду:

    
    On my PostgreSQL server localhost, please create a new database named 'contacts'.
    
    Then create a new user <db-username> with password `<password>` and give that 
    user full rights (create tables and other db objects, CRUD data) to the new 
    contacts database.
    
    Please do the work, and only prompt me when you are unable to do it yourself.
    
    

    Замените <db-username> имя <password> пользователя и пароль требуемой базы данных соответственно.

  2. На компьютерах Windows рекомендуется сохранить имя пользователя и пароль базы данных в локальном файле:

    %APPDATA%\postgresql\pgpass.conf

    Обычно это позволит устранить следующее расположение на жестком диске:

    c:\Users\<username>\AppSettings\Roaming\postgresql\pgpass.conf

    Замените <username> имя пользователя Windows.

    Файл должен использовать следующий формат:

    localhost:5432:<database-name>:<database-user>:<password>
    

    Предполагается, что вы работаете с экземпляром PostgreSQL на локальном компьютере и размещается на порту по умолчанию (5432).

    <database-name> Замените и замените contacts<db-username><password> учетными данными, которые вы использовали на предыдущем шаге.

    Дополнительные сведения о файле см. в pgpass.confдокументации PostgreSQL.

  3. Добавьте путь к файлу pgpass.conf в переменную среды PATH.

  4. Проверьте подключение, чтобы убедиться, что он работает. Используйте интерфейс командной строки psql, чтобы протестировать его с помощью следующей команды:

    psql -h localhost -U <db-username> -d contacts
    

    Замените <db-username> сегмент имени пользователя базы данных в pgpass.conf файле.

    pgpass.conf Если параметр настроен неправильно, появится запрос на ввод пароля.

Создание приложения с помощью GitHub Copilot

Во-первых, вы предоставляете инструкции и рекомендации по созданию и тестированию приложения на локальном компьютере.

  1. В Visual Studio Code нажмите кнопку "Переключить чат" в строке заголовка, чтобы открыть окно чата. Используйте значок "Создать чат" для создания нового сеанса чата.

  2. В области чата выберите Agent режим. На момент написания этой статьи дает Claude Sonnet 4 лучшие результаты. Используйте лучшую модель, доступную для создания кода.

  3. Чтобы начать создание приложений, используйте следующую команду:

    
    I want you to create a simple Contact Manager application using Django and PostgreSQL. 
    
    This should be a CRUD application, so create web pages that display a list of 
    contacts, view details, add a new contact, edit or delete a contact. Each Contact 
    is comprised of a contact's Name, Address, and Phone number. Since this is a 
    Python / Django project please make sure to work inside of a virtual environment (venv). 
    I've already created a PostgreSQL database at `localhost` named `contacts`. There are 
    no tables yet. For local development in PostgreSQL, I'm using a `pgpass.conf` file 
    and I have tested that it works. Prefer Git Bash in the terminal. Beyond that, if there's 
    anything I need to do, please include instructions. But I want you to do as much as 
    you can on your own.
    
    

    Запрос имеет следующие функции:

    • Тип создаваемого приложения. В этом случае приложение управления контактами.
    • Используемые технологии. В этом случае Django и PostgreSQL.
    • Архитектура сайта, которую требуется создать. В этом случае приложение стиля CRUD, которое содержит страницу со списком всех контактов и позволяет детализировать конкретный контакт.
    • Дополнительные сведения о домене проблемы. В этом случае вы предоставляете поля данных, которыми нужно управлять приложением, включая имя контакта, адрес и номер телефона.
    • Конкретные инструкции по базе данных. В этом случае вы указываете GitHub Copilot использовать определенную базу данных, которую вы уже создали, укажите состояние базы данных и как взаимодействовать
    • Конкретные инструкции по среде. В этом случае вы указываете ему использовать Git Bash. Вы также сообщаете, что вы хотите, чтобы работа выполнялась в среде Python (venv), что является лучшей практикой. GitHub Copilot может выбрать эти варианты самостоятельно, но заявив, что он явно делает процесс плавной.
    • Явные ожидания, что вы хотите, чтобы он выполнял как можно больше работы самостоятельно. В противном случае GitHub Copilot может предоставить инструкции для вас.
    • Явные ожидания инструкций или контекста. Если вам нужно выполнить другие действия, необходимо задать ожидание, которое вам нужно, чтобы помочь вам, предоставив инструкции и рекомендации.

    Это важно

    Когда GitHub Copilot использует терминал для создания новой виртуальной среды, Visual Studio Code обнаруживает venv и отображает диалоговое окно с запросом на его использование. Игнорировать это диалоговое окно. Он уходит. Разрешить GitHub Copilot использовать терминал исключительно для этой операции.

    GitHub Copilot использует встроенный терминал и среду Visual Studio Code для:

    • Создание виртуальной среды Python
    • Установка библиотек и других зависимостей
    • Создание файлов кода
    • Создание таблиц базы данных
    • Создание файлов readme для дальнейших инструкций
    • Создание тестовых данных
    • Запуск локального веб-сервера
    • Тестирование веб-сайта (с помощью простого браузера или curl)

    Из-за того, как LLM создает код, команды, которые он использует, и то, что он создает каждый раз.

Развертывание в Azure с помощью GitHub Copilot для Azure

После локального создания сайта GitHub Copilot вы создадите запрос с просьбой GitHub Copilot внести изменения на сайт в процессе подготовки к развертыванию, а затем выполнить развертывание. Расширение GitHub Copilot для Azure обрабатывает этот запрос, создавая файлы Bicep, а затем запуская эти файлы с помощью ИНТЕРФЕЙСА командной azd строки.

Используйте следующий запрос ... Вы можете скопировать его в Блокнот и изменить любое значение в скобках, например, <resource-group-name> и <region-name>, затем скопировать и вставить их в чат GitHub Copilot.


Please help me deploy this Django app to Azure. 

First, create and use a Resource Group named "<resource-group-name>" in the "<region-name>" region.

Second, create an Azure App Service for the Django app in the new "<resource-group-name>" in the "<region-name>" region.

Third, create a new Azure Database for PostgreSQL flexible server named "<server-name>" in a resource group named "<resource-group-name>" in my subscription "<subscription-id>". Use my current account ("<account-id>") as the Microsoft Entra administrator. For the PostgreSQL "Administrator login", use "<azure-database-username>" and password "<azure-database-password>". Use a "development" class database configuration in the "<region-name>" region. Create a new database named "contact_manager_db" and migrate all tables and data from the local version of "contact_manager_db". The local database uses the username "<local-database-username>" and password "<local-database-password>". Add my IP address as a firewall rule, allow public access to this resource through the internet using a public IP address, and allow public access from any Azure service within Azure to this server.

Fourth, use Service Connector (and any other services you need to make this configuration work successfully) to connect the web app to the database. You may need to modify the application code to accommodate Service Connector. Also, please ensure a secure connection between the Azure App Service web site and the Azure PostgreSQL Flexible Server.

Please choose the least expensive options.  

If you are prompted for an environment, use the name "contacts-env". Configure my firewall to allow my IP address. Beyond that, if there's anything 
I need to do, please include instructions. But I want you to do as much as you can on your own.

Before you start: 

- Do you have any questions that need to be clarified? 
- Please create a plan for deployment in the form of a TODO list, and then update the TODO list as you progress. Do not start until I have a chance to review your plan and tell you to proceed.

Запрос имеет следующие функции:

  • Определенные службы, которые вы хотите использовать. В этом случае вы сообщаете, что хотите использовать службу приложений Azure, гибкий сервер Azure PostgreSQL, соединитель службы. Вы также даете ему инструкцию "делать все, что вам нужно сделать", чтобы убедиться, что она работает.
  • Определенные параметры службы. В этом случае вы указываете, что для каждой службы можно использовать наименее дорогостоящий вариант.
  • Указание на возможные дальнейшие шаги. В этом случае предполагается, что для использования соединителя службы необходимо внести некоторые изменения кода.
  • Предвидеть решения заранее. В этом случае вы предоставляете ответ на необходимые параметры, например имя среды для azd,
  • Явные ожидания, что вы хотите, чтобы он делал столько работы самостоятельно. В противном случае вам могут быть предоставлены инструкции.
  • Явные ожидания инструкций или контекста. Задайте ожидание, что вам нужна помощь и руководство, когда она просит вас принять меры.
  • Спрашивает, требуется ли какое-либо уточнение. Это часто возникает в потенциальных проблемах, таких как пограничные случаи или неясные инструкции.
  • Запрашивает план со списком TODO. Дает уверенность в том, что GitHub Copilot для Azure понимает назначение и планирует выполнить его по мере необходимости.

GitHub Copilot использует встроенный терминал и среду Visual Studio Code для:

  • Обновление файлов кода для размещения соединителя службы
  • Создайте файлы Bicep
  • Запуск интерфейса командной azd строки
  • Тестирование развертывания
  • При необходимости отладите развертывание с помощью журналов или других выходных данных

Взаимодействие с GitHub Copilot

GitHub Copilot требует ввода перед выполнением многих задач. Пауза для ввода — это возможность направить GitHub Copilot на правильный курс, чтобы предотвратить ошибки или настроить созданные выходные данные в ваших предпочтениях.

Пока он работает, вы можете смотреть и согласиться с большинством вопросов, которые он задает вам с помощью кнопки Continue .

Это важно

Если вы получите непредвиденные результаты, перезапустите сеанс чата.

Иногда требуется предоставить входные данные. Существует несколько отдельных моментов, когда вам будет предложено ввести данные:

  • Учетные данные пользователя . Если для текущей операции в терминале требуется имя пользователя или пароль, вам будет предложено получить эту информацию.
  • Момент принятия решения - Иногда GitHub Copilot предоставляет несколько вариантов в списке и спросите, какой вы предпочитаете.
  • Палитра команд — иногда GitHub Copilot использует функции расширения и параметры отображаются в палитре команд. После выбора GitHub Copilot продолжается.
  • Интерактивное имя входа — Azure CLI и azd CLI необходимы для проверки подлинности и инициирует один из нескольких механизмов проверки подлинности.

Тестирование и запрос изменений

Когда GitHub Copilot завершит работу, возможно, он считает сайт полным и функциональным. Однако тестирование может обнаруживать проблемы или непредвиденные или нежелательные функции приложения.

Используйте запросы, описывающие проблему с максимальной детализацией. Например, если приложение не работает, укажите максимальное количество сведений, включая точное сообщение об ошибке и ожидаемый результат.

Прерывание потока

Иногда вы можете заметить, что GitHub Copilot либо застрял в цикле, пытаясь выполнить те же задачи неоднократно или он завис в процессе, который никогда не возвращается. Например, при диагностике проблем с веб-сайтом GitHub Copilot может потребоваться выполнить следующую команду:

az webapp log tail

Когда GitHub Copilot застрял, вы можете прервать GitHub Copilot одним из нескольких способов:

  • CTRL+c
  • Использование кнопки приостановки в чате
  • Завершение сеанса чата и запуск нового чата

Это важно

Завершение сеанса чата уничтожает все контексты, созданные во время сеанса, которые могут быть или не желательными.

Чтобы предоставить контекст тому, что только что произошло, и подталкивать его к возможному решению, можно добавить запрос сразу после прерывания GitHub Copilot, например:

You were just getting the logs from Azure App Service but it did not return 
so you got stuck. Try to interrupt after a minute once you get what you need 
from the logs.

Дальнейшие шаги