Generieren einer Django- und PostgreSQL-App und Bereitstellen in Azure

In diesem Artikel erfahren Sie, wie Sie mit GitHub Copilot interagieren, um eine lokale Django-Web-App zu generieren, die CRUD-Vorgänge in einer PostgreSQL-Datenbank ausführt. Als Nächstes führt sie dazu, wie Sie mit GitHub Copilot für Azure interagieren, um die Web-App und -Datenbank in Azure App Service und Azure PostgreSQL Flexible Server (zusammen mit mehreren unterstützenden Azure-Diensten) bereitzustellen.

Die spezifische Anwendung, die Sie erstellen, ist eine triviale Kontaktverwaltungsanwendung, die CRUD-Vorgänge mit einer Architektur des Listendetailstils enthält.

Hinweis

Die Verwendung eines LLM (Large Language Model) zum Generieren einer Anwendung kann zu inkonsistenten Ergebnissen führen. Ihre Ergebnisse hängen vom LLM-Modell, Ihren Anweisungen und mehr ab. Der Schwerpunkt dieses Leitfadens liegt darin, Ihnen zu verstehen, wie Sie bessere Ergebnisse erzielen können. Jedes Mal, wenn Sie dieses Beispiel durchlaufen, erhalten Sie jedoch (potenziell) unterschiedliche Ergebnisse.

Voraussetzungen

Von Bedeutung

GitHub Copilot ist ein separates Abonnement, das von GitHub verwaltet wird. Fragen zu GitHub Copilot-Abonnements und -Support finden Sie unter "Erste Schritte mit einem GitHub Copilot-Plan".

Vorbereiten der Chatsitzung

  1. Verwenden Sie in Visual Studio Code die Schaltfläche "Chat umschalten" in der Titelleiste, oder wählen Sie STRG+ALT+i aus, um das Chatfenster zu öffnen. Verwenden Sie das Symbol "Neuer Chat", um eine neue Chatsitzung zu erstellen.

  2. Wählen Sie im Chatbereich den Agent-Modus aus. Zum Zeitpunkt des Schreibens liefert Claude Sonnet 4 die besten Ergebnisse. Verwenden Sie das beste Modell, das für die Codegenerierung verfügbar ist.

Überprüfen Der Konfiguration

Stellen Sie sicher, dass Ihre CLI-Tools und Visual Studio Code aktualisiert, ordnungsgemäß konfiguriert und ordnungsgemäß ausgeführt werden, um Ihre Ergebnisse zu verbessern.

  1. Geben Sie in einem neuen Chat die folgende Eingabeaufforderung ein:

    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 wird Sie um Erlaubnis bitten, eine Reihe von Prüfungen auf der Befehlszeile auszuführen, um sicherzustellen, dass die Tools sowie die neuesten Versionen dieser Tools installiert sind.

  2. Aktualisieren Sie in Ihrem Terminal die Azure CLI mit dem Befehl az --upgrade.

  3. Installieren Sie in Ihrem Terminal die kennwortlose Dienstconnector-Erweiterung für Azure CLI mit dem Befehl az extension add --name serviceconnector-passwordless --upgrade

  4. Legen Sie in Visual Studio Code das Standardterminal auf Git Bash fest. Wechseln Sie zu "Dateieinstellungen >> ", und geben Sie dann in "Sucheinstellungen" "Standardprofil: Windows" ein, und wählen Sie "Git Bash" aus. Möglicherweise müssen Sie Visual Studio Code neu starten, damit diese Einstellung wirksam wird.

    Hinweis

    Die Verwendung von Git Bash ist nicht unbedingt notwendig, aber zum Zeitpunkt dieses Schreibens liefert es die besten Ergebnisse.

  5. Verwenden Sie in Visual Studio Code die Erweiterung PostgreSQL für Visual Studio Code (Vorschau) und navigieren Sie zu der contacts Datenbank.

  6. Verwenden Sie in Visual Studio Code die Azure-Erweiterung, und stellen Sie sicher, dass Sie bei Ihrem Azure-Konto und -Abonnement angemeldet sind. Wenn Sie die Azure-Erweiterung in der primären Seitenleiste öffnen, sollten Sie In der Lage sein, Ihre vorhandenen Abonnements und Ressourcen anzuzeigen.

  7. Erstellen Sie einen neuen Ordner für Ihre neuen Anwendungsdateien, und öffnen Sie ihn in Visual Studio Code als Arbeitsbereich.

Einrichten der lokalen Datenbank

Während GitHub Copilot praktisch jede Anwendungsentwicklungsaufgabe ausführen kann, die Entwickler in der Regel ausführen, erhalten Sie die besten Ergebnisse, wenn Sie einige Aufgaben in kleineren Schritten ausführen. Um die Ergebnisse zu verbessern, erstellen Sie die Datenbank, und richten Sie die Authentifizierung und Autorisierung ein, bevor Sie mit GitHub Copilot arbeiten.

  1. Erstellen Sie einen neuen Chat, und verwenden Sie die folgende Eingabeaufforderung:

    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.
    

    Ersetzen Sie <db-username> und <password> jeweils durch den gewünschten Datenbank-Benutzernamen bzw. das gewünschte Kennwort.

  2. Auf Windows-Computern empfiehlt es sich, den Datenbankbenutzernamen und das Kennwort in einer lokalen Datei zu speichern:

    %APPDATA%\postgresql\pgpass.conf

    Dadurch wird in der Regel der folgende Speicherort auf Der Festplatte aufgelöst:

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

    Ersetzen Sie <username> durch Ihren Windows-Benutzernamen.

    Die Datei sollte das folgende Format verwenden:

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

    Dabei wird davon ausgegangen, dass Sie mit einer Instanz von PostgreSQL auf Ihrem lokalen Computer arbeiten und dass sie am Standardport (5432) gehostet wird.

    Ersetzen Sie <database-name> durch contacts und ersetzen Sie <db-username> und <password> durch die Anmeldeinformationen, die Sie im vorherigen Schritt verwendet haben.

    Weitere Informationen zur Datei finden Sie in der pgpass.confDokumentation von PostgreSQL.

  3. Fügen Sie den Pfad zur Datei pgpass.conf Ihrer PATH-Umgebungsvariable hinzu.

  4. Testen Sie die Verbindung, um sicherzustellen, dass sie funktioniert. Verwenden Sie die psql CLI, um sie mit dem folgenden Befehl zu testen:

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

    Ersetzen Sie <db-username> in der Datei pgpass.conf durch das Datenbankbenutzernamensegment.

    Wenn pgpass.conf nicht richtig eingerichtet ist, werden Sie aufgefordert, Ihr Kennwort einzugeben.

Generieren einer App mit GitHub Copilot

Zunächst geben Sie Anweisungen und Anleitungen zum Erstellen und Testen der Anwendung auf Ihrem lokalen Computer an.

  1. Klicken Sie in Visual Studio Code in der Titelleiste auf die Schaltfläche „Chat umschalten“, um das Chatfenster zu öffnen. Verwenden Sie das Symbol "Neuer Chat", um eine neue Chatsitzung zu erstellen.

  2. Wählen Sie im Chatbereich den Agent-Modus aus. Zum Zeitpunkt des Schreibens liefert Claude Sonnet 4 die besten Ergebnisse. Verwenden Sie das beste Modell, das für die Codegenerierung verfügbar ist.

  3. Verwenden Sie die folgende Eingabeaufforderung, um mit der Anwendungsgenerierung zu beginnen:

    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.
    

    Die Eingabeaufforderung verfügt über die folgenden Features:

    • Der Typ der Anwendung, die Sie erstellen möchten. In diesem Fall eine Kontaktverwaltungsanwendung.
    • Die zu verwendenden Technologien. In diesem Fall django und PostgreSQL.
    • Die Websitearchitektur, die Sie generieren möchten. In diesem Fall eine CRUD-Formatanwendung, die eine Seite enthält, die alle Kontakte auflistet und es Ihnen ermöglicht, einen Drilldown zu einem bestimmten Kontakt zu erstellen.
    • Weitere Details zur Problemdomäne. In diesem Fall geben Sie die Datenfelder an, die von der Anwendung verwaltet werden sollen, einschließlich des Namens, der Adresse und der Telefonnummer des Kontakts.
    • Spezifische Anweisungen zur Datenbank. In diesem Fall weisen Sie GitHub Copilot an, eine bestimmte Datenbank zu verwenden, die Sie bereits erstellt haben, den Zustand der Datenbank bereitzustellen und anzugeben, wie damit interagiert werden soll.
    • Spezifische Anweisungen zur Umgebung. In diesem Fall weisen Sie es an, Git Bash zu verwenden. Sie teilen es auch mit, dass die Arbeit in einer Python-Umgebung (venv) durchgeführt werden soll, was eine bewährte Methode ist. GitHub Copilot kann diese Optionen eigenständig auswählen, aber es wird explizit angegeben, dass der Prozess reibungslos verläuft.
    • Explizite Erwartungen, dass es möglichst viel Arbeit selbstständig erledigen soll. Andernfalls gibt GitHub Copilot Ihnen möglicherweise Anweisungen, die Sie befolgen sollen.
    • Explizite Erwartungen an Anweisungen/Kontext. Wenn es von Ihnen verlangt, weitere Aktionen auszuführen, machen Sie deutlich, dass es Sie dabei unterstützen soll, indem Sie ihm Anweisungen und Hilfestellungen geben.

    Von Bedeutung

    Wenn GitHub Copilot das Terminal zum Erstellen einer neuen virtuellen Umgebung verwendet, erkennt Visual Studio Code das venv Dialogfeld und zeigt ein Dialogfeld an, in dem Sie gefragt werden, ob Sie es verwenden möchten. Dieses Dialogfeld ignorieren. Es geht weg. Erlauben Sie GitHub Copilot, das Terminal exklusiv für diesen Vorgang zu verwenden.

    GitHub Copilot verwendet das integrierte Terminal und die Visual Studio Code-Umgebung für:

    • Erstellen einer virtuellen Python-Umgebung
    • Installieren von Bibliotheken und anderen Abhängigkeiten
    • Generieren von Codedateien
    • Datenbanktabellen generieren
    • README-Dateien mit weiteren Anweisungen generieren
    • Erstellen von Testdaten
    • Starten eines lokalen Webservers
    • Testen der Website (mit einfachem Browser oder Curl)

    Aufgrund der Art, wie LLMs Code generieren, unterscheiden sich die von ihr verwendeten Befehle und deren Erstellung jedes Mal.

Bereitstellen in Azure mit GitHub Copilot für Azure

Nachdem GitHub Copilot die Website lokal generiert hat, erstellen Sie eine Aufforderung, GitHub Copilot aufzufordern, Änderungen an der Website zur Vorbereitung auf die Bereitstellung vorzunehmen und dann die Bereitstellung durchzuführen. Die GitHub Copilot für Azure-Erweiterung verarbeitet diese Anforderung, indem Bicep-Dateien erstellt und diese Dateien dann mit der azd CLI ausgeführt werden.

Verwenden Sie den folgenden Prompt ... Sie können ihn in Notepad kopieren und einen beliebigen Wert in spitzen Klammern wie <resource-group-name> und <region-name> ändern und ihn dann per Kopieren und Einfügen in den GitHub Copilot chat einfügen:

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.

Die Eingabeaufforderung verfügt über die folgenden Features:

  • Bestimmte Dienste, die Sie verwenden möchten. In diesem Fall teilen Sie ihr mit, dass Sie Azure App Service, Azure PostgreSQL Flexible Server, Service Connector verwenden möchten. Außerdem geben Sie ihm die Anweisung, "alles zu tun, was Sie tun müssen", um sicherzustellen, dass es funktioniert.
  • Bestimmte Dienstoptionen. In diesem Fall geben Sie an, dass Sie für jeden Dienst die kostengünstigste Option verwenden möchten.
  • Hinweis auf wahrscheinliche nächste Schritte. In diesem Fall schlagen Sie vor, dass einige Codeänderungen erforderlich sind, um Service Connector zu verwenden.
  • Vorausschauen Sie Entscheidungen im Voraus. In diesem Fall stellen Sie die Antwort auf die benötigten Einstellungen bereit, z. B. einen Umgebungsnamen für azd,
  • Explizite Erwartungen, dass es so viel Arbeit wie möglich eigenständig erledigen soll. Andernfalls könnte sie Ihnen Anweisungen geben, die Sie befolgen sollen.
  • Explizite Erwartungen an Anweisungen/Kontext. Legen Sie die Erwartung fest, dass Sie Hilfe und Anleitungen benötigen, wenn Sie aufgefordert werden, Maßnahmen zu ergreifen.
  • Fragt, ob eine Klarstellung erforderlich ist. Dadurch treten häufig potenzielle Probleme wie Randfälle oder unklare Anweisungen zutage.
  • Fordert einen Plan mit einer TODO-Liste an. Gibt Ihnen die Sicherheit, dass GitHub Copilot für Azure die Aufgabe versteht und plant, sie wie von Ihnen beabsichtigt auszuführen.

GitHub Copilot verwendet das integrierte Terminal und die Visual Studio Code-Umgebung für:

  • Aktualisieren Sie die Codedateien, um Service Connector zu unterstützen.
  • Generieren von Bicep-Dateien
  • Führen Sie die azd CLI aus.
  • Bereitstellung testen
  • Debuggen Sie die Bereitstellung bei Bedarf mithilfe von Protokollen oder anderer Ausgaben.

Interagieren mit GitHub Copilot

GitHub Copilot erfordert Ihre Eingabe, bevor viele Aufgaben ausgeführt werden. Eine Eingabepause gibt Ihnen die Möglichkeit, GitHub Copilot anzuweisen, den Kurs zu korrigieren, um Fehler zu vermeiden oder die generierten Ergebnisse an Ihre Vorlieben anzupassen.

Währenddessen können Sie die meisten der Fragen, die Ihnen gestellt werden, mit der Schaltfläche Continue durchsehen und bestätigen.

Von Bedeutung

Wenn Sie unerwartete Ergebnisse erhalten, starten Sie mit einer neuen Chatsitzung neu.

Gelegentlich müssen Sie Eingaben bereitstellen. Es gibt ein paar verschiedene Momente, in denen Sie zur Eingabe aufgefordert werden:

  • Benutzeranmeldeinformationen – Wenn der aktuelle Vorgang im Terminal einen Benutzernamen oder ein Kennwort erfordert, werden Sie zur Eingabe dieser Informationen aufgefordert.
  • Moment der Entscheidung - Gelegentlich gibt GitHub Copilot Ihnen mehrere Optionen in einer Liste und fragen Sie, welche Sie bevorzugen.
  • Die Befehlspalette – Gelegentlich verwendet GitHub Copilot die Features einer Erweiterung, und die Optionen werden in der Befehlspalette angezeigt. Sobald Sie die richtigen Auswahlen getroffen haben, fährt GitHub Copilot fort.
  • Interaktive Anmeldung – Die Azure CLI und azd CLI fordern Sie zur Authentifizierung auf und starten einen von mehreren Authentifizierungsmechanismen.

Testen und Anfordern von Änderungen

Wenn GitHub Copilot fertig ist, kann es sein, dass es die Website als vollständig und funktionsfähig betrachtet. Ihre Tests können jedoch Probleme oder unerwartete/unerwünschte App-Features erkennen.

Verwenden Sie Eingabeaufforderungen, die das Problem mit so vielen Details wie möglich beschreiben. Wenn die Anwendung beispielsweise nicht funktioniert, stellen Sie so viele Informationen wie möglich bereit, einschließlich der genauen Fehlermeldung und des erwarteten Ergebnisses.

Den Ablauf unterbrechen

Gelegentlich stellen Sie möglicherweise fest, dass GitHub Copilot entweder in einer Schleife stecken bleibt, die versucht, dieselben Aufgaben wiederholt auszuführen, oder es bleibt in einem Prozess hängen, der nie zurückgegeben wird. Wenn Sie beispielsweise Probleme mit der Website diagnostizieren, kann GitHub Copilot einen Befehl wie folgt ausführen:

az webapp log tail

Wenn GitHub Copilot hängen bleibt, können Sie GitHub Copilot auf eine von mehreren Arten unterbrechen:

  • Strg+c
  • Verwenden Sie im Chat die Schaltfläche „Pause“.
  • Beenden der Chatsitzung und Starten eines neuen Chats

Von Bedeutung

Wenn Sie die Chatsitzung beenden, werden alle während der Sitzung aufgebauten Kontext zerstört, was möglicherweise wünschenswert ist oder nicht.

Um ihm Kontext zu dem zu geben, was gerade passiert ist, und es in Richtung einer möglichen Lösung zu lenken, könnten Sie unmittelbar nach dem Unterbrechen von GitHub Copilot einen Prompt hinzufügen, z. B.:

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.