Sdílet prostřednictvím


Generování aplikace Django a PostgreSQL a nasazení do Azure

Tento článek vás provede interakcí s GitHub Copilotem a vygeneruje místní webovou aplikaci Django, která provádí operace CRUD v databázi PostgreSQL. Dále vás provede interakcí s GitHub Copilotem pro Azure k nasazení webové aplikace a databáze na flexibilní server Azure App Service a Azure PostgreSQL (spolu s několika podpůrnými službami Azure).

Konkrétní aplikace, kterou vytvoříte, je triviální aplikace pro správu kontaktů, která obsahuje operace CRUD s architekturou stylu seznamu podrobností.

Poznámka:

Použití velkého jazykového modelu (LLM) k vygenerování aplikace může přinést nekonzistentní výsledky. Vaše výsledky závisí na modelu LLM, vašich pokynech a dalších. Cílem tohoto průvodce je pomoct vám pochopit, jak získat lepší výsledky. Pokaždé, když projdete tímto příkladem, ale dostanete (potenciálně) výrazně odlišné výsledky.

Požadavky

Důležité

GitHub Copilot je samostatné předplatné spravované GitHubem. Dotazy týkající se předplatných GitHub Copilot a podpory najdete v tématu Začínáme s plánem GitHub Copilot.

Příprava chatovací relace

  1. V editoru Visual Studio Code použijte tlačítko Přepnout chat v záhlaví nebo stisknutím kláves Ctrl+Alt+i otevřete okno chatu. K vytvoření nové relace chatu použijte ikonu Nový chat.

  2. V oblasti chatu vyberte režim.Agent V době psaní tohoto textu Claude Sonnet 4 přináší nejlepší výsledky. Použijte nejlepší model dostupný pro generování kódu.

Ověření konfigurace

Ujistěte se, že jsou nástroje rozhraní příkazového řádku a Visual Studio Code aktualizované, správně nakonfigurované a správně fungující, aby se zlepšily výsledky.

  1. V novém chatu zadejte následující výzvu:

    
    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 požádá o oprávnění ke spuštění řady kontrol příkazového řádku, aby se zajistilo, že máte nainstalované nástroje a nejaktuálnější verze těchto nástrojů.

  2. V terminálu aktualizujte Azure CLI příkazem az --upgrade.

  3. V terminálu pomocí příkazu nainstalujte rozšíření bez hesla konektoru služby pro Azure CLI. az extension add --name serviceconnector-passwordless --upgrade

  4. V editoru Visual Studio Code nastavte výchozí terminál na Git Bash. Přejděte do Nastavení předvoleb > souborů > a pak v části Nastavení hledání zadejte Výchozí profil: Windows a vyberte Git Bash. Aby se toto nastavení projevilo, budete možná muset restartovat Visual Studio Code.

    Poznámka:

    Použití GitU Bash není nezbytně nutné, ale v době psaní tohoto článku přináší nejlepší výsledky.

  5. V editoru Visual Studio Code použijte rozšíření PostgreSQL for Visual Studio Code (Preview) a přejděte do contacts databáze.

  6. V editoru Visual Studio Code použijte rozšíření Azure a ujistěte se, že jste přihlášeni ke svému účtu a předplatnému Azure. Když otevřete rozšíření Azure na primárním bočním panelu, měli byste být schopni zobrazit stávající předplatná a prostředky.

  7. Vytvořte novou složku pro nové soubory aplikace a otevřete ji v editoru Visual Studio Code jako pracovní prostor.

Nastavení místní databáze

I když GitHub Copilot dokáže provádět prakticky všechny úlohy vývoje aplikací, které vývojáři obvykle provádějí, získáte nejlepší výsledky v případě, že provedete některé úlohy v menších krocích. Pokud chcete zlepšit výsledky, vytvořte databázi a nastavte ověřování a autorizaci před prací s GitHub Copilotem.

  1. Vytvořte nový chat a použijte následující výzvu:

    
    On my PostgreSQL server localhost, please create a new database named market.
    
    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 
    market database.
    
    Please do the work, and only prompt me when you are unable to do it yourself.
    
    

    <db-username> Nahraďte <password> požadované uživatelské jméno a heslo databáze.

  2. Doporučeným postupem zabezpečení na počítačích s Windows je uložit uživatelské jméno a heslo databáze do místního souboru:

    %APPDATA%\postgresql\pgpass.conf

    Obvykle se tím vyřeší následující umístění na pevném disku:

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

    Nahraďte <username> uživatelské jméno windows.

    Soubor by měl používat následující formát:

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

    Předpokládá se, že pracujete s instancí PostgreSQL na místním počítači a že je hostovaná na výchozím portu (5432).

    <database-name> Nahraďte a nahraďte contacts<db-username><password> přihlašovacími údaji, které jste použili v předchozím kroku.

    Další informace o souboru najdete v pgpass.confdokumentaci k PostgreSQL.

  3. Přidejte cestu k pgpass.conf souboru do proměnné prostředí PATH.

  4. Otestujte připojení, abyste měli jistotu, že funguje. Pomocí rozhraní příkazového řádku psql ho otestujte pomocí následujícího příkazu:

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

    Nahraďte <db-username> segmentem uživatelského jména databáze v pgpass.conf souboru.

    Pokud není pgpass.conf správně nastavená, zobrazí se výzva k zadání hesla.

Generování aplikace pomocí GitHub Copilotu

Nejprve poskytnete pokyny a pokyny k sestavení a testování aplikace na místním počítači.

  1. V editoru Visual Studio Code otevřete okno chatu pomocí tlačítka Přepnout chat v záhlaví. K vytvoření nové relace chatu použijte ikonu Nový chat.

  2. V oblasti chatu vyberte režim.Agent V době psaní tohoto textu Claude Sonnet 4 přináší nejlepší výsledky. Použijte nejlepší model dostupný pro generování kódu.

  3. K zahájení generování aplikace použijte následující výzvu:

    
    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.
    
    

    Výzva obsahuje následující funkce:

    • Typ aplikace, kterou chcete vytvořit. V takovém případě se jedná o aplikaci pro správu kontaktů.
    • Technologie, které se mají použít. V tomto případě Django a PostgreSQL.
    • Architektura webu, kterou chcete vygenerovat. V tomto případě aplikace stylu CRUD, která obsahuje stránku se seznamem všech kontaktů a umožňuje přejít k podrobnostem o konkrétním kontaktu.
    • Další podrobnosti o doméně problému. V takovém případě zadáte pole dat, která má aplikace spravovat, včetně jména, adresy a telefonního čísla kontaktu.
    • Konkrétní pokyny týkající se databáze. V takovém případě dáte GitHubu Copilot pokyn, aby používal konkrétní databázi, kterou jste už vytvořili, zadali stav databáze a postup interakce.
    • Konkrétní pokyny k prostředí. V takovém případě ho dáte pokyn, aby používal Git Bash. Také se dozvíte, že chcete, aby se práce prováděla v prostředí Pythonu (venv), což je osvědčený postup. GitHub Copilot si může tyto možnosti zvolit samostatně, ale výslovně říká, že proces funguje hladce.
    • Explicitní očekávání, že chcete, aby to co nejvíce fungovalo na vlastní pěst. V opačném případě může GitHub Copilot poskytnout pokyny, které byste měli vzít.
    • Explicitní očekávání pro instrukce / kontext. Pokud potřebujete provést další akce, nastavte očekávání, že vám to pomůže tím, že poskytnete pokyny a pokyny.

    Důležité

    Když GitHub Copilot pomocí terminálu vytvoří nové virtuální prostředí, Visual Studio Code zjistí venv a zobrazí dialogové okno s dotazem, jestli ho chcete použít. Toto dialogové okno ignorujte. Je pryč. Povolit GitHub Copilotu používat terminál výhradně pro tuto operaci.

    GitHub Copilot používá integrovaný terminál a prostředí editoru Visual Studio Code k:

    • Vytvoření virtuálního prostředí Pythonu
    • Instalace knihoven a dalších závislostí
    • Generování souborů kódu
    • Generování databázových tabulek
    • Další pokyny k vygenerování souborů readme
    • Vytvoření testovacích dat
    • Spuštění místního webového serveru
    • Otestování webu (pomocí jednoduchého prohlížeče nebo curl)

    Vzhledem k tomu, jak LLMs generuje kód, příkazy, které používá a co vytváří, se pokaždé liší.

Nasazení do Azure pomocí GitHub Copilotu pro Azure

Jakmile GitHub Copilot vygeneruje web místně, vytvoříte výzvu s žádostí o provedení změn webu GitHub Copilot při přípravě na nasazení a následné provedení nasazení. GitHub Copilot pro rozšíření Azure zpracovává tento požadavek vytvořením souborů Bicep a jejich spuštěním pomocí rozhraní příkazového azd řádku.

Použijte následující výzvu... Můžete zkopírovat do Poznámkového bloku a změnit libovolnou hodnotu v hranatých závorkách, například <resource-group-name> a <region-name> pak zkopírovat a vložit do chatu 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.

Výzva obsahuje následující funkce:

  • Konkrétní služby, které chcete použít. V tomto případě zjistíte, že chcete použít Azure App Service, flexibilní server Azure PostgreSQL, konektor služby. Také mu poskytnete pokyn k tomu, aby "udělal cokoli jiného, co potřebujete udělat", aby to fungovalo.
  • Konkrétní možnosti služby. V tomto případě označíte, že chcete pro každou službu použít nejnákladnější možnost.
  • Tip na pravděpodobné další kroky. V takovém případě doporučujeme, aby bylo možné použít konektor Service Connector, je nutné upravit nějaký kód.
  • Předvídejte rozhodnutí předem. V tomto případě zadáte odpověď na potřebná nastavení, například název prostředí pro azd,
  • Explicitní očekávání, která chcete, aby to dělalo co nejvíce práce na vlastní pěst. V opačném případě může obsahovat pokyny, které byste měli vzít.
  • Explicitní očekávání pro instrukce / kontext. Nastavte očekávání, že potřebujete pomoc a pokyny, když vás požádá o provedení akce.
  • Ptá se, jestli je potřeba nějaké objasnění. Často se tak zobrazí potenciální problémy, jako jsou případy okrajů nebo nejasné pokyny.
  • Požádá o plán se seznamem úkolů. Dává vám jistotu, že GitHub Copilot pro Azure rozumí přiřazení a plánům, jak jste chtěli.

GitHub Copilot používá integrovaný terminál a prostředí editoru Visual Studio Code k:

  • Aktualizace souborů kódu tak, aby vyhovovaly konektoru služby
  • Generování souborů Bicep
  • Spuštění rozhraní příkazového azd řádku
  • Otestování nasazení
  • V případě potřeby můžete nasazení ladit pomocí protokolů nebo jiných.

Interakce s GitHub Copilotem

GitHub Copilot vyžaduje váš vstup před prováděním mnoha úloh. Pozastavení vstupu je příležitost směrovat GitHub Copilot správně, aby se zabránilo chybám nebo přizpůsobení vygenerovaného výstupu podle vašich preferencí.

Během práce můžete sledovat a odsouhlasit většinu otázek, které vás požádají pomocí Continue tlačítka.

Důležité

Pokud se zobrazí neočekávané výsledky, restartujte ji pomocí nové relace chatu.

Někdy je potřeba zadat vstup. Při zobrazení výzvy k zadání vstupu se zobrazí několik jedinečných okamžiků:

  • Přihlašovací údaje uživatele – Pokud aktuální operace v terminálu vyžaduje uživatelské jméno nebo heslo,
  • Moment rozhodnutí – GitHub Copilot vám občas nabídne několik možností v seznamu a zeptejte se, kterému dáváte přednost.
  • Paleta příkazů – Někdy gitHub Copilot používá funkce rozšíření a možnosti se zobrazují v paletě příkazů. Jakmile provedete správné výběry, GitHub Copilot pokračuje.
  • Interaktivní přihlášení – Rozhraní příkazového řádku Azure CLI a azd rozhraní příkazového řádku vyžadují ověření a zahájí jeden z několika ověřovacích mechanismů.

Testování a žádost o změny

Jakmile se GitHub Copilot dokončí, je možné, že web považuje za dokončený a funkční. Testování ale může odhalit problémy nebo neočekávané nebo nežádoucí funkce aplikace.

Použijte výzvy, které popisují problém s co nejvíce podrobnostmi. Pokud například aplikace nefunguje, uveďte co nejvíce informací, včetně přesné chybové zprávy a očekávaného výsledku.

Přerušení toku

Někdy si můžete všimnout, že GitHub Copilot se buď zasekne ve smyčce, která se pokouší opakovaně provádět stejné úlohy, nebo se zasekne v procesu, který se nikdy nevrátí. Například při diagnostice problémů s webem může GitHub Copilot chtít spustit příkaz, například:

az webapp log tail

Když se GitHub Copilot zasekne, můžete GitHub Copilot přerušit jedním z několika způsobů:

  • Ctrl+c
  • Použití tlačítka pozastavit v chatu
  • Ukončení relace chatu a zahájení nového chatu

Důležité

Ukončení chatové relace zničí veškerý kontext vytvořený během relace, což může nebo nemusí být žádoucí.

Pokud chcete poskytnout kontext k tomu, co se právě stalo, a posunout ho k možnému řešení, můžete okamžitě po přerušení GitHub Copilotu přidat výzvu, například:

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.

Další kroky