Partilhar via


Gere um aplicativo Django e PostgreSQL e implante no Azure

Este artigo orienta você sobre como interagir com o GitHub Copilot para gerar um aplicativo Web Django local que executa operações CRUD em um banco de dados PostgreSQL. Em seguida, ele orienta você sobre como interagir com o GitHub Copilot for Azure para implantar o aplicativo Web e o banco de dados no Serviço de Aplicativo do Azure e no Servidor Flexível PostgreSQL do Azure (juntamente com vários serviços do Azure de suporte).

O aplicativo específico que você cria é um aplicativo de gerenciamento de contatos trivial que apresenta operações CRUD com uma arquitetura de estilo de detalhes de lista.

Observação

Usar um modelo de linguagem grande (LLM) para gerar um aplicativo pode produzir resultados inconsistentes. Seus resultados dependem do modelo LLM, de suas instruções e muito mais. O foco deste guia é ajudá-lo a entender como obter melhores resultados. No entanto, cada vez que você passa por este exemplo, você obtém (potencialmente) resultados dramaticamente diferentes.

Pré-requisitos

Importante

O GitHub Copilot é uma assinatura separada gerenciada pelo GitHub. Para perguntas sobre assinaturas e suporte do GitHub Copilot, consulte Introdução a um plano do GitHub Copilot.

Preparar a sessão de chat

  1. No Visual Studio Code, use o botão Alternar bate-papo na barra de título ou selecione Ctrl+Alt+i para abrir a janela de bate-papo. Use o ícone Novo bate-papo para criar uma nova sessão de bate-papo.

  2. Na área de chat, selecione Agent o modo. No momento em que este artigo foi escrito, Claude Sonnet 4 produz os melhores resultados. Use o melhor modelo disponível para geração de código.

Valide sua configuração

Verifique se as ferramentas da CLI e o Visual Studio Code estão atualizados, configurados corretamente e operando corretamente para melhorar seus resultados.

  1. Em um novo bate-papo, digite o seguinte prompt:

    
    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?
    
    

    O GitHub Copilot pedirá permissão para executar uma série de verificações de linha de comando para garantir que você tenha as ferramentas, bem como as versões mais atualizadas dessas ferramentas, instaladas.

  2. No seu terminal, atualize a CLI do Azure com o comando az --upgrade.

  3. No seu terminal, instale a extensão sem senha do conector de serviço para a CLI do Azure com o comando az extension add --name serviceconnector-passwordless --upgrade

  4. No Visual Studio Code, defina o terminal padrão como Git Bash. Vá para Configurações de preferências > de arquivo>, em seguida, em "Configurações de pesquisa", digite "Perfil padrão: Windows" e selecione "Git Bash". Talvez seja necessário reiniciar o Visual Studio Code para que essa configuração entre em vigor.

    Observação

    Usar o Git Bash não é estritamente necessário, mas no momento em que este artigo foi escrito produz os melhores resultados.

  5. No Visual Studio Code, use a extensão PostgreSQL para Visual Studio Code (Preview) e navegue até o contacts banco de dados.

  6. No Visual Studio Code, use a extensão do Azure e verifique se você está conectado à sua conta e assinatura do Azure. Ao abrir a extensão do Azure na barra lateral principal, você deve ser capaz de exibir suas assinaturas e recursos existentes.

  7. Crie uma nova pasta para seus novos arquivos de aplicativo e abra-a no Visual Studio Code como seu espaço de trabalho.

Configurar o banco de dados local

Embora o GitHub Copilot seja capaz de executar praticamente qualquer tarefa de desenvolvimento de aplicativos que os desenvolvedores normalmente executam, você obterá os melhores resultados se executar algumas tarefas em etapas menores. Para melhorar os resultados, crie o banco de dados e configure a autenticação e a autorização antes de trabalhar com o GitHub Copilot.

  1. Crie um novo bate-papo e use o seguinte prompt:

    
    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.
    
    

    Substitua <db-username> e <password> por seu nome de usuário e senha de banco de dados desejados, respectivamente.

  2. Em máquinas Windows, a prática recomendada de segurança é armazenar o nome de usuário e a senha do banco de dados em um arquivo local:

    %APPDATA%\postgresql\pgpass.conf

    Isso normalmente resolverá o seguinte local no disco rígido:

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

    Substitua <username> pelo seu nome de utilizador do Windows.

    O ficheiro deve utilizar o seguinte formato:

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

    Isso pressupõe que você esteja trabalhando com uma instância do PostgreSQL em seu computador local e que ela esteja hospedada na porta padrão (5432).

    Substitua <database-name> por contacts e substitua <db-username> e <password> pelas credenciais usadas na etapa anterior.

    Para obter mais informações sobre o arquivo, consulte a pgpass.confdocumentação do PostgreSQL.

  3. Adicione o caminho para o pgpass.conf arquivo em sua variável de ambiente PATH.

  4. Teste a conexão para garantir que ela funcione. Use a CLI psql para testá-la com o seguinte comando:

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

    Substitua <db-username> pelo segmento de nome de usuário do banco de dados no pgpass.conf arquivo.

    Se o pgpass.conf não estiver configurado corretamente, você verá uma solicitação para digitar sua senha.

Gerar um aplicativo usando o GitHub Copilot

Primeiro, você fornece instruções e orientações sobre como criar e testar o aplicativo em seu computador local.

  1. No Visual Studio Code, use o botão Alternar bate-papo na barra de título para abrir a janela de bate-papo. Use o ícone Novo bate-papo para criar uma nova sessão de bate-papo.

  2. Na área de chat, selecione Agent o modo. No momento em que este artigo foi escrito, Claude Sonnet 4 produz os melhores resultados. Use o melhor modelo disponível para geração de código.

  3. Use o seguinte prompt para iniciar a geração do aplicativo:

    
    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.
    
    

    O prompt tem os seguintes recursos:

    • O tipo de aplicativo que você deseja criar. Neste caso, uma aplicação de gestão de contactos.
    • As tecnologias a utilizar. Neste caso, Django e PostgreSQL.
    • A arquitetura do site que você deseja gerar. Neste caso, um aplicativo estilo CRUD que apresenta uma página que lista todos os contatos e permite que você faça uma busca detalhada em um contato específico.
    • Mais detalhes sobre o domínio do problema. Nesse caso, você fornece os campos de dados que deseja que o aplicativo gerencie, incluindo o nome, o endereço e o número de telefone do contato.
    • Instruções específicas sobre a base de dados. Nesse caso, você instrui o GitHub Copilot a usar um banco de dados específico que já criou, fornece o estado do banco de dados e como interagir
    • Instruções específicas sobre o ambiente. Nesse caso, você o instrui a usar o Git Bash. Você também diz que deseja que o trabalho seja executado em um ambiente Python (venv), que é uma prática recomendada. O GitHub Copilot pode escolher essas opções por conta própria, mas afirmar explicitamente faz com que o processo transcorra sem problemas.
    • Expectativas explícitas de que você quer que ele faça o máximo de trabalho por conta própria possível. Caso contrário, o GitHub Copilot pode fornecer instruções para você tomar.
    • Expectativas explícitas para instruções/contexto. Se ele precisar que você execute outras ações, você define a expectativa de que precisa dele para ajudá-lo, fornecendo instruções e orientações.

    Importante

    Quando o GitHub Copilot usa o terminal para criar um novo ambiente virtual, o Visual Studio Code deteta o venv e exibe uma caixa de diálogo perguntando se você deseja usá-lo. Ignore essa caixa de diálogo. Vai embora. Permitir que o GitHub Copilot use o terminal exclusivamente para esta operação.

    O GitHub Copilot usa o terminal interno e o ambiente do Visual Studio Code para:

    • Criar um ambiente virtual Python
    • Instalar bibliotecas e outras dependências
    • Gerar arquivos de código
    • Gerar tabelas de banco de dados
    • Gerar arquivos readme para obter mais instruções
    • Criar dados de teste
    • Iniciar um servidor Web local
    • Teste o site (usando Simple Browser ou curl)

    Devido à forma como os LLMs geram código, os comandos que ele usa e o que ele produz são diferentes a cada vez.

Implantar no Azure com o GitHub Copilot para Azure

Depois que o GitHub Copilot gerar o site localmente, você criará um prompt solicitando que o GitHub Copilot faça alterações no site em preparação para a implantação e, em seguida, execute a implantação. A extensão GitHub Copilot for Azure lida com essa solicitação criando arquivos Bicep e executando esses arquivos usando a azd CLI.

Use o seguinte prompt ... você pode copiar para o Bloco de Notas e alterar qualquer valor entre colchetes como <resource-group-name> e <region-name> , em seguida, copiar e colar no chat do 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.

O prompt tem os seguintes recursos:

  • Serviços específicos que pretende utilizar. Nesse caso, você informa que deseja usar o Serviço de Aplicativo do Azure, o Servidor Flexível do Azure PostgreSQL, o Conector de Serviço. Você também dá a ele a instrução de "fazer o que mais você precisa fazer" para garantir que ele funcione.
  • Opções de serviço específicas. Nesse caso, você indica que deseja usar a opção mais barata possível para cada serviço.
  • Indique os próximos passos prováveis. Nesse caso, você sugere que alguma modificação de código é necessária para usar o Service Connector.
  • Antecipe as decisões com antecedência. Nesse caso, você fornece a resposta para as configurações necessárias, como um nome de ambiente para azd,
  • Expectativas explícitas de que você quer que ele faça tanto trabalho por conta própria. Caso contrário, ele pode fornecer instruções para você tomar.
  • Expectativas explícitas para instruções/contexto. Defina a expectativa de que você precisa de ajuda e orientação quando ela lhe pedir para agir.
  • Pergunta se é necessário algum esclarecimento. Isso geralmente traz à tona possíveis problemas, como casos de borda ou instruções pouco claras.
  • Solicita um plano com uma lista TODO. Dá-lhe confiança de que o GitHub Copilot para Azure compreende a atribuição e planeia realizá-la como pretendia.

O GitHub Copilot usa o terminal interno e o ambiente do Visual Studio Code para:

  • Atualize os arquivos de código para acomodar o Service Connector
  • Gerar arquivos Bicep
  • Executar a azd CLI
  • Testar a implantação
  • Se necessário, depure a implementação usando logs ou outro output

Interaja com o Copilot do GitHub

O GitHub Copilot requer sua entrada antes de executar muitas tarefas. Uma pausa para entrada é a sua oportunidade de direcionar o GitHub Copilot para corrigir o curso, a fim de evitar erros ou personalizar a saída gerada de acordo com suas preferências.

Enquanto está funcionando, você pode assistir e concordar com a maioria das perguntas que ele faz usando o Continue botão.

Importante

Se você obtiver resultados inesperados, reinicie usando uma nova sessão de bate-papo.

Ocasionalmente, você é obrigado a fornecer informações. Há alguns momentos distintos em que você é solicitado a entrar:

  • Credenciais de utilizador - Se a operação atual no terminal exigir um nome de utilizador ou palavra-passe, ser-lhe-á solicitado essa informação.
  • Momento da decisão - Ocasionalmente, o GitHub Copilot lhe dá várias opções em uma lista e pergunta qual você prefere.
  • A Paleta de Comandos - Ocasionalmente, o Copilot do GitHub usa os recursos de uma extensão e as opções são exibidas na Paleta de Comandos. Depois de fazer as seleções adequadas, o Copiloto do GitHub prossegue.
  • Logon interativo - A CLI e azd a CLI do Azure precisam que você se autentique e inicia um dos vários mecanismos de autenticação.

Testando e pedindo alterações

Quando o GitHub Copilot terminar, é possível que ele considere o site completo e funcional. No entanto, o teste pode detetar problemas ou recursos inesperados/indesejáveis do aplicativo.

Use prompts que descrevam o problema com o máximo de detalhes possível. Por exemplo, se o aplicativo não estiver funcionando, forneça o máximo de informações possível, incluindo a mensagem de erro exata e o resultado esperado.

Interrupção do fluxo

Ocasionalmente, você pode notar que o GitHub Copilot está preso em um loop tentando executar as mesmas tarefas repetidamente ou está preso em um processo que nunca retorna. Por exemplo, ao diagnosticar problemas com o site, o GitHub Copilot pode querer executar um comando como:

az webapp log tail

Quando o GitHub Copilot está preso, você pode interromper o GitHub Copilot de uma das várias maneiras:

  • + Ctrlc
  • Use o botão de pausa no bate-papo
  • Termine a sessão de chat e inicie um novo chat

Importante

Encerrar a sessão de chat destrói todo o contexto construído durante a sessão, o que pode ou não ser desejável.

Para fornecer contexto ao que acabou de acontecer e empurrá-lo para uma possível solução, você pode adicionar um prompt imediatamente após interromper o Copilot do GitHub, como:

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.

Próximos passos