Partager via


Générer une application Django et PostgreSQL et la déployer sur Azure

Cet article vous guide dans l’interaction avec GitHub Copilot pour générer une application web Django locale qui effectue des opérations CRUD sur une base de données PostgreSQL. Ensuite, il vous guide dans l’interaction avec GitHub Copilot pour Azure afin de déployer l’application web et la base de données sur Azure App Service et azure PostgreSQL Flexible Server (ainsi que plusieurs services Azure de prise en charge).

L’application spécifique que vous créez est une application de gestion des contacts triviale qui propose des opérations CRUD avec une architecture de style de détail de liste.

Note

L’utilisation d’un modèle de langage volumineux (LLM) pour générer une application peut produire des résultats incohérents. Vos résultats dépendent du modèle LLM, de vos instructions et bien plus encore. L’objectif de ce guide est de vous aider à comprendre comment obtenir de meilleurs résultats. Toutefois, chaque fois que vous parcourez cet exemple, vous obtenez (potentiellement) des résultats considérablement différents.

Prerequisites

Important

GitHub Copilot est un abonnement distinct géré par GitHub. Pour plus d’informations sur les abonnements et le support GitHub Copilot, consultez Prise en main d’un plan GitHub Copilot.

Préparer la session de conversation

  1. Dans Visual Studio Code, utilisez le bouton Bascule Conversation dans la barre de titre ou sélectionnez Ctrl+Alt+i pour ouvrir la fenêtre de conversation. Utilisez l’icône Nouvelle conversation pour créer une session de conversation.

  2. Dans la zone de conversation, sélectionnez Agent le mode. Au moment de cet écriture, Claude Sonnet 4 produit les meilleurs résultats. Utilisez le meilleur modèle disponible pour la génération de code.

Valider votre configuration

Assurez-vous que vos outils CLI et Visual Studio Code sont mis à jour, correctement configurés et fonctionnent correctement pour améliorer vos résultats.

  1. Dans une nouvelle conversation, entrez l’invite suivante :

    
    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 demande l’autorisation d’exécuter une série de vérifications de ligne de commande pour vous assurer que vous disposez des outils, ainsi que les versions les plus récentes de ces outils, installées.

  2. Dans votre terminal, mettez à jour Azure CLI avec la commande az --upgrade.

  3. Dans votre terminal, installez l’extension sans mot de passe du connecteur de service pour Azure CLI avec la commande az extension add --name serviceconnector-passwordless --upgrade

  4. Dans Visual Studio Code, définissez le terminal par défaut sur Git Bash. Accédez aux paramètres des préférences > de fichier>, puis, dans « Paramètres de recherche », tapez « Profil par défaut : Windows », puis sélectionnez « Git Bash ». Vous devrez peut-être redémarrer Visual Studio Code pour que ce paramètre prenne effet.

    Note

    L’utilisation de Git Bash n’est pas strictement nécessaire, mais au moment de cette écriture, elle génère les meilleurs résultats.

  5. Dans Visual Studio Code, utilisez l’extension PostgreSQL pour Visual Studio Code (préversion) et accédez à la contacts base de données.

  6. Dans Visual Studio Code, utilisez l’extension Azure et vérifiez que vous êtes connecté à votre compte Azure et à votre abonnement. Lorsque vous ouvrez l’extension Azure dans la barre latérale principale, vous devez être en mesure d’afficher vos abonnements et ressources existants.

  7. Créez un dossier pour vos nouveaux fichiers d’application et ouvrez-le dans Visual Studio Code en tant qu’espace de travail.

Configurer la base de données locale

Bien que GitHub Copilot soit capable d’effectuer pratiquement toutes les tâches de développement d’applications que les développeurs effectuent généralement, vous obtiendrez les meilleurs résultats si vous effectuez certaines tâches en étapes plus petites. Pour améliorer les résultats, créez la base de données et configurez l’authentification et l’autorisation avant d’utiliser GitHub Copilot.

  1. Créez une conversation et utilisez l’invite suivante :

    
    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.
    
    

    Remplacez et utilisez <db-username> respectivement le nom d’utilisateur et <password> le mot de passe de votre base de données souhaitées.

  2. Sur les ordinateurs Windows, la meilleure pratique de sécurité recommandée consiste à stocker le nom d’utilisateur et le mot de passe de la base de données dans un fichier local :

    %APPDATA%\postgresql\pgpass.conf

    Cela résout généralement l’emplacement suivant sur votre disque dur :

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

    Remplacez <username> par votre nom d’utilisateur Windows.

    Le fichier doit utiliser le format suivant :

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

    Cela suppose que vous utilisez une instance de PostgreSQL sur votre ordinateur local et qu’elle est hébergée sur le port par défaut (5432).

    <database-name> Remplacez et remplacez contacts<db-username> et <password> par les informations d’identification que vous avez utilisées à l’étape précédente.

    Pour plus d’informations sur le fichier, consultez la pgpass.confdocumentation de PostgreSQL.

  3. Ajoutez le chemin d’accès au pgpass.conf fichier dans votre variable d’environnement PATH.

  4. Testez la connexion pour vous assurer qu’elle fonctionne. Utilisez l’interface CLI psql pour la tester avec la commande suivante :

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

    Remplacez <db-username> par le segment de nom d’utilisateur de la base de données dans le pgpass.conf fichier.

    Si la pgpass.conf configuration n’est pas correcte, vous verrez une invite à taper votre mot de passe.

Générer une application à l’aide de GitHub Copilot

Tout d’abord, vous fournissez des instructions et des conseils sur la création et le test de l’application sur votre ordinateur local.

  1. Dans Visual Studio Code, utilisez le bouton Bascule conversation dans la barre de titre pour ouvrir la fenêtre de conversation. Utilisez l’icône Nouvelle conversation pour créer une session de conversation.

  2. Dans la zone de conversation, sélectionnez Agent le mode. Au moment de cet écriture, Claude Sonnet 4 produit les meilleurs résultats. Utilisez le meilleur modèle disponible pour la génération de code.

  3. Utilisez l’invite suivante pour commencer la génération de l’application :

    
    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.
    
    

    L’invite présente les fonctionnalités suivantes :

    • Type d’application que vous souhaitez créer. Dans ce cas, une application de gestion des contacts.
    • Technologies à utiliser. Dans ce cas, Django et PostgreSQL.
    • Architecture de site que vous souhaitez générer. Dans ce cas, une application de style CRUD qui propose une page qui répertorie tous les contacts et vous permet d’explorer un contact spécifique.
    • Plus de détails sur le domaine du problème. Dans ce cas, vous fournissez les champs de données que l’application doit gérer, y compris le nom, l’adresse et le numéro de téléphone du contact.
    • Instructions spécifiques concernant la base de données. Dans ce cas, vous demandez à GitHub Copilot d’utiliser une base de données spécifique que vous avez déjà créée, vous fournissez l’état de la base de données et comment interagir
    • Instructions spécifiques sur l’environnement. Dans ce cas, vous lui demandez d’utiliser Git Bash. Vous indiquez également que vous souhaitez que le travail soit effectué dans un environnement Python (venv), qui est une bonne pratique. GitHub Copilot peut choisir ces options par lui-même, mais en indiquant qu’elle rend le processus en douceur.
    • Attentes explicites que vous souhaitez qu'elle effectue autant de travail par ses propres moyens que possible. Sinon, GitHub Copilot peut fournir des instructions pour vous permettre de prendre.
    • Attentes explicites pour les instructions/le contexte. Si vous avez besoin d’effectuer d’autres actions, vous devez définir l’attente que vous en avez besoin pour vous aider en fournissant des instructions et des conseils.

    Important

    Lorsque GitHub Copilot utilise le terminal pour créer un environnement virtuel, Visual Studio Code détecte et venv affiche une boîte de dialogue indiquant si vous souhaitez l’utiliser. Ignorez cette boîte de dialogue. Ça va disparaître. Autoriser GitHub Copilot à utiliser le terminal exclusivement pour cette opération.

    GitHub Copilot utilise le terminal intégré et l’environnement Visual Studio Code pour :

    • Créer un environnement virtuel Python
    • Installer des bibliothèques et d’autres dépendances
    • Générer des fichiers de code
    • Générer des tables de base de données
    • Générer des fichiers lisez-moi pour obtenir des instructions supplémentaires
    • Créer des données de test
    • Lancer un serveur web local
    • Tester le site web (à l’aide de Simple Browser ou curl)

    En raison de la façon dont LLMs génère du code, les commandes qu’elle utilise et ce qu’elle produit sont différentes à chaque fois.

Déployer sur Azure avec GitHub Copilot pour Azure

Une fois Que GitHub Copilot génère le site localement, vous allez créer une invite demandant à GitHub Copilot d’apporter des modifications au site en préparation du déploiement, puis d’effectuer le déploiement. L’extension GitHub Copilot pour Azure gère cette requête en créant des fichiers Bicep, puis en exécutant ces fichiers à l’aide de l’interface azd CLI.

Utilisez l’invite suivante ... vous pouvez copier dans le Bloc-notes et modifier n’importe quelle valeur entre crochets <resource-group-name><region-name> , puis copier et coller dans la conversation 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.

L’invite présente les fonctionnalités suivantes :

  • Services spécifiques que vous souhaitez utiliser. Dans ce cas, vous indiquez que vous souhaitez utiliser Azure App Service, serveur flexible Azure PostgreSQL, connecteur de service. Vous lui donnez également l’instruction de « faire ce que vous devez faire d’autre » pour vous assurer qu’elle fonctionne.
  • Options de service spécifiques. Dans ce cas, vous indiquez que vous souhaitez utiliser l’option la moins coûteuse possible pour chaque service.
  • Conseil aux prochaines étapes probables. Dans ce cas, vous suggèrez que certaines modifications de code sont nécessaires pour utiliser Service Connector.
  • Anticiper les décisions à l’avance. Dans ce cas, vous fournissez la réponse aux paramètres dont il a besoin, comme un nom d’environnement pour azd,
  • Attentes explicites que vous souhaitez qu’elle fasse autant de travail sur elle-même. Sinon, il peut fournir des instructions pour que vous preniez.
  • Attentes explicites pour les instructions/le contexte. Définissez l’attente que vous avez besoin d’aide et d’aide lorsqu’il vous demande d’agir.
  • Demande si des précisions sont nécessaires. Cela présente souvent des problèmes potentiels tels que des cas de périphérie ou des instructions peu claires.
  • Demande un plan avec une liste TODO. Vous donne confiance que GitHub Copilot pour Azure comprend l’affectation et les plans à effectuer comme vous l’avez prévu.

GitHub Copilot utilise le terminal intégré et l’environnement Visual Studio Code pour :

  • Mettre à jour les fichiers de code pour prendre en charge Service Connector
  • Générer des fichiers Bicep
  • Exécuter l’interface azd CLI
  • Tester le déploiement
  • Si nécessaire, déboguez le déploiement à l’aide de *logs* ou d’autres sorties

Interagir avec GitHub Copilot

GitHub Copilot nécessite votre entrée avant d’effectuer de nombreuses tâches. Une pause pour l’entrée est votre opportunité de diriger GitHub Copilot vers le bon cours afin d’empêcher les erreurs ou de personnaliser la sortie générée selon vos préférences.

Pendant qu’il fonctionne, vous pouvez regarder et accepter la plupart des questions qu’il vous pose à l’aide du Continue bouton.

Important

Si vous obtenez des résultats inattendus, redémarrez à l’aide d’une nouvelle session de conversation.

Parfois, vous devez fournir une entrée. Il existe quelques moments distincts lorsque vous êtes invité à entrer :

  • Informations d’identification de l’utilisateur : si l’opération actuelle dans le terminal nécessite un nom d’utilisateur ou un mot de passe, vous serez invité à fournir ces informations.
  • Moment de décision - Parfois, GitHub Copilot vous donne plusieurs options dans une liste et vous demandez ce que vous préférez.
  • La palette de commandes - Parfois, GitHub Copilot utilise les fonctionnalités d’une extension et les options sont affichées dans la palette de commandes. Une fois que vous avez effectué les sélections appropriées, GitHub Copilot continue.
  • Connexion interactive : Azure CLI et azd CLI doivent vous authentifier et lancer l’un des plusieurs mécanismes d’authentification.

Test et demande des modifications

Une fois GitHub Copilot terminé, il est possible qu’il considère que le site est complet et fonctionnel. Toutefois, vos tests peuvent détecter des problèmes, ou des fonctionnalités d’application inattendues/indésirables.

Utilisez des invites qui décrivent le problème avec autant de détails que possible. Par exemple, si l’application ne fonctionne pas, fournissez autant d’informations que possible, y compris le message d’erreur exact et le résultat attendu.

Interruption du flux

Parfois, vous remarquerez peut-être que GitHub Copilot est bloqué dans une boucle qui tente d’effectuer les mêmes tâches à plusieurs reprises ou qu’il est bloqué dans un processus qui ne retourne jamais. Par exemple, lors du diagnostic des problèmes avec le site web, GitHub Copilot peut exécuter une commande comme suit :

az webapp log tail

Lorsque GitHub Copilot est bloqué, vous pouvez interrompre GitHub Copilot de plusieurs façons :

  • Ctrl+C
  • Utiliser le bouton de pause dans la conversation
  • Mettre fin à la session de conversation et démarrer une nouvelle conversation

Important

La fin de la session de conversation détruit tout le contexte créé pendant la session, ce qui peut ou non être souhaitable.

Pour fournir un contexte à ce qui s’est passé et le déplacer vers une solution possible, vous pouvez ajouter une invite immédiatement après l’interruption de GitHub Copilot, par exemple :

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.

Étapes suivantes