Aracılığıyla paylaş


Django ve PostgreSQL uygulaması oluşturma ve Azure'a dağıtma

Bu makale, PostgreSQL veritabanında CRUD işlemleri gerçekleştiren yerel bir Django web uygulaması oluşturmak için GitHub Copilot ile etkileşim kurma konusunda size yol gösterir. Ardından, web uygulamasını ve veritabanını Azure App Service ve Azure PostgreSQL Esnek Sunucusu'na (çeşitli destekleyici Azure hizmetleriyle birlikte) dağıtmak üzere Azure için GitHub Copilot ile etkileşim kurma konusunda size yol gösterir.

Oluşturduğunuz belirli uygulama, liste ayrıntısı stili mimarisine sahip CRUD işlemlerini içeren önemsiz bir kişi yönetimi uygulamasıdır.

Uyarı

Uygulama oluşturmak için Büyük Dil Modeli (LLM) kullanmak tutarsız sonuçlar verebilir. Sonuçlarınız LLM modeline, yönergelerinize ve daha fazlasına bağlıdır. Bu kılavuzun odak noktası, nasıl daha iyi sonuçlar alabileceğinizi anlamanıza yardımcı olmaktır. Ancak bu örnekten her geçtiğinde önemli ölçüde farklı sonuçlar elde edersiniz ...

Önkoşullar

Önemli

GitHub Copilot, GitHub tarafından yönetilen ayrı bir aboneliktir. GitHub Copilot abonelikleri ve Destek ile ilgili sorular için bkz. GitHub Copilot planını kullanmaya başlama.

Sohbet oturumunu hazırlama

  1. Visual Studio Code'da, başlık çubuğundaki Sohbeti Aç/Kapat düğmesini kullanın veya Sohbet Penceresi'ni açmak için Ctrl+Alt+i'yi seçin. Yeni sohbet oturumu oluşturmak için Yeni Sohbet simgesini kullanın.

  2. Sohbet alanında modu seçin Agent . Bu yazı sırasında en Claude Sonnet 4 iyi sonuçları verir. Kod oluşturma için kullanılabilen en iyi modeli kullanın.

Yapılandırmanızı doğrulama

SONUÇLARınızı iyileştirmek için CLI araçlarınızın ve Visual Studio Code'unuzun güncelleştirildiğinden, düzgün yapılandırıldığından ve düzgün çalıştığından emin olun.

  1. Yeni bir sohbette aşağıdaki istemi girin:

    
    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, araçlara ve bu araçların en güncel sürümlerine sahip olduğunuzdan emin olmak için bir dizi komut satırı denetimi çalıştırma izni ister.

  2. Terminalinizde Azure CLI'yı komutuyla az --upgradegüncelleştirin.

  3. Terminalinizde komutuyla Azure CLI için hizmet bağlayıcısı parolasız uzantısını yükleyin az extension add --name serviceconnector-passwordless --upgrade

  4. Visual Studio Code'da varsayılan terminali Git Bash olarak ayarlayın. Dosya > Tercihleri > Ayarları'na gidin, ardından "Arama ayarları" bölümüne "Varsayılan Profil: Windows" yazın ve "Git Bash" öğesini seçin. Bu ayarın etkili olması için Visual Studio Code'un yeniden başlatılması gerekebilir.

    Uyarı

    Git Bash kullanmak kesinlikle gerekli değildir, ancak bu yazının yazılması sırasında en iyi sonuçları verir.

  5. Visual Studio Code'da, Visual Studio Code için PostgreSQL (Önizleme) uzantısını contacts kullanın ve veritabanına gidin.

  6. Visual Studio Code'da Azure uzantısını kullanın ve Azure hesabınızda ve aboneliğinizde oturum açtığınızdan emin olun. Birincil yan çubukta Azure uzantısını açtığınızda, mevcut aboneliklerinizi ve kaynaklarınızı görüntüleyebilmeniz gerekir.

  7. Yeni uygulama dosyalarınız için yeni bir klasör oluşturun ve çalışma alanınız olarak Visual Studio Code'da açın.

Yerel veritabanını ayarlama

GitHub Copilot, geliştiricilerin genellikle gerçekleştirdiği neredeyse tüm uygulama geliştirme görevlerini gerçekleştirebilir ancak bazı görevleri daha küçük adımlarda gerçekleştirirseniz en iyi sonuçları elde edersiniz. Sonuçları geliştirmek için veritabanını oluşturun ve GitHub Copilot ile çalışmadan önce kimlik doğrulaması ve yetkilendirmeyi ayarlayın.

  1. Yeni bir sohbet oluşturun ve aşağıdaki istemi kullanın:

    
    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.
    
    

    ve <db-username> değerini sırasıyla istediğiniz veritabanı kullanıcı adı ve parolasıyla değiştirin<password>.

  2. Windows makinelerinde önerilen güvenlik en iyi uygulaması, veritabanı kullanıcı adını ve parolasını yerel bir dosyada depolamaktır:

    %APPDATA%\postgresql\pgpass.conf

    Bu genellikle sabit sürücünüzde aşağıdaki konumu çözer:

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

    yerine Windows kullanıcı adınızı girin <username> .

    Dosya aşağıdaki biçimi kullanmalıdır:

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

    Bu, yerel bilgisayarınızda bir PostgreSQL örneğiyle çalıştığınızı ve varsayılan bağlantı noktasında (5432) barındırıldığını varsayar.

    değerini <database-name> ve yerine önceki adımda kullandığınız kimlik bilgilerini yazın contacts<db-username>.<password>

    Dosya hakkında pgpass.conf daha fazla bilgi için PostgreSQL'in belgelerine bakın.

  3. Dosyanın yolunu pgpass.conf PATH ortam değişkeninize ekleyin.

  4. Çalıştığından emin olmak için bağlantıyı test edin. Psql CLI'yi kullanarak aşağıdaki komutla test edin:

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

    değerini dosyadaki veritabanı kullanıcı adı kesimiyle <db-username> değiştirinpgpass.conf.

    pgpass.conf doğru ayarlanmadıysa parolanızı yazmanız için bir istem görürsünüz.

GitHub Copilot kullanarak uygulama oluşturma

İlk olarak, uygulamayı yerel bilgisayarınızda derleme ve test etme yönergelerini ve yönergeleri sağlarsınız.

  1. Visual Studio Code'da, Başlık çubuğundaki Sohbeti Aç/Kapat düğmesini kullanarak Sohbet Penceresi'ni açın. Yeni sohbet oturumu oluşturmak için Yeni Sohbet simgesini kullanın.

  2. Sohbet alanında modu seçin Agent . Bu yazı sırasında en Claude Sonnet 4 iyi sonuçları verir. Kod oluşturma için kullanılabilen en iyi modeli kullanın.

  3. Uygulama oluşturmayı başlatmak için aşağıdaki istemi kullanın:

    
    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.
    
    

    İstem aşağıdaki özelliklere sahiptir:

    • Oluşturmak istediğiniz uygulama türü. Bu durumda, bir kişi yönetimi uygulaması.
    • Kullanılacak teknolojiler. Bu durumda, Django ve PostgreSQL.
    • Oluşturmak istediğiniz site mimarisi. Bu durumda, tüm kişiyi listeleyen ve belirli bir kişinin detayına gitmenizi sağlayan bir sayfa içeren CRUD stilindeki bir uygulama.
    • Sorun etki alanı hakkında daha fazla ayrıntı. Bu durumda, kişinin adı, adresi ve telefon numarası dahil olmak üzere uygulamanın yönetmesini istediğiniz veri alanlarını sağlarsınız.
    • Veritabanıyla ilgili özel yönergeler. Bu durumda GitHub Copilot'a önceden oluşturduğunuz belirli bir veritabanını kullanmasını, veritabanının durumunu ve nasıl etkileşim kurabileceğinizi bildirirsiniz
    • Ortamla ilgili belirli yönergeler. Bu durumda, Git Bash'i kullanması için yönerge alırsınız. Ayrıca, çalışmanın en iyi yöntem olan Python ortamında (venv) gerçekleştirilmesini istediğinizi de söylersiniz. GitHub Copilot bu seçenekleri kendi başına belirleyebilir, ancak açıkça belirterek sürecin sorunsuz bir şekilde ilerlemesini sağlar.
    • Mümkün olduğunca çok işi kendi başına gerçekleştirmesini istediğinize ilişkin açık beklentiler. Aksi takdirde, GitHub Copilot almanız için yönergeler sağlayabilir.
    • Yönergeler /bağlam için açık beklentiler. Başka eylemler gerçekleştirmeniz gerekiyorsa, yönergeler ve yönergeler sağlayarak size yardımcı olması için ihtiyacınız olan beklentiyi ayarlarsınız.

    Önemli

    GitHub Copilot yeni bir sanal ortam oluşturmak için terminali kullandığında venv , Visual Studio Code bunu algılar ve kullanmak isteyip istemediğinizi soran bir iletişim kutusu görüntüler. Bu iletişim kutusunu yoksayın. Yok oluyor. GitHub Copilot'ın terminali yalnızca bu işlem için kullanmasına izin verin.

    GitHub Copilot, aşağıdakiler için yerleşik terminali ve Visual Studio Code ortamını kullanır:

    • Python sanal ortamı oluşturma
    • Kitaplıkları ve diğer bağımlılıkları yükleme
    • Kod dosyaları oluşturma
    • Veritabanı tabloları oluşturma
    • Daha fazla yönerge için benioku dosyaları oluşturma
    • Test verileri oluşturma
    • Yerel web sunucusunu başlatma
    • Web sitesini test edin (Simple Browser veya curl kullanarak)

    LLM'lerin kod oluşturma şekli nedeniyle, kullandığı komutlar ve bunların ürettiği komutlar her seferinde farklıdır.

Azure için GitHub Copilot ile Azure'a dağıtma

GitHub Copilot siteyi yerel olarak oluşturduktan sonra GitHub Copilot'dan dağıtıma hazırlık olarak sitede değişiklik yapmasını ve ardından dağıtımı gerçekleştirmesini isteyen bir istem yazacaksınız. Azure için GitHub Copilot uzantısı, bicep dosyaları oluşturup cli kullanarak azd bu dosyaları çalıştırarak bu isteği işler.

Aşağıdaki istemi kullanın... Not Defteri'ne kopyalayıp köşeli ayraç <resource-group-name> içindeki herhangi bir değeri değiştirebilir ve <region-name> ardından kopyalayıp GitHub Copilot sohbetine yapıştırabilirsiniz:


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.

İstem aşağıdaki özelliklere sahiptir:

  • Kullanmak istediğiniz belirli hizmetler. Bu durumda, Azure App Service, Azure PostgreSQL Esnek Sunucusu, Hizmet Bağlayıcısı'nı kullanmak istediğinizi söylersiniz. Ayrıca çalıştığından emin olmak için "yapmanız gereken her şeyi yapın" yönergesini de verirsiniz.
  • Belirli hizmet seçenekleri. Bu durumda, her hizmet için mümkün olan en düşük maliyetli seçeneği kullanmak istediğinizi belirtirsiniz.
  • Olası sonraki adımlarla ilgili ipucu. Bu durumda, Hizmet Bağlayıcısı'nı kullanmak için bazı kod değişikliklerinin gerekli olduğunu önerirsiniz.
  • Kararları önceden tahmin edin. Bu durumda, için ortam adı gibi ihtiyaç duyduğu ayarlara azdyanıt verirsiniz.
  • Kendi başına en fazla işi yapmak istediğinize ilişkin açık beklentiler. Aksi takdirde, almanız gereken yönergeler sağlanabilir.
  • Yönergeler /bağlam için açık beklentiler. Harekete geçmenizi istediğinde yardıma ve rehberliğe ihtiyacınız olduğu beklentisini ayarlayın.
  • Herhangi bir açıklama gerekip gerekmediğini sorar. Bu genellikle uç durumlar veya belirsiz yönergeler gibi olası sorunları ortaya çıkar.
  • TODO listesi içeren bir plan istemektedir. Azure için GitHub Copilot'un ödevi anladığına ve istediğiniz gibi gerçekleştirmeyi planladığına güven verir.

GitHub Copilot, aşağıdakiler için yerleşik terminali ve Visual Studio Code ortamını kullanır:

  • Hizmet Bağlayıcısı'na uyum sağlamak için kod dosyalarını güncelleştirme
  • Bicep dosyaları oluştur
  • CLI'yi azd çalıştırma
  • Dağıtımı test edin
  • Gerekirse günlükleri veya diğer çıktıları kullanarak dağıtımı hata ayıklayın.

GitHub Copilot ile etkileşim kurma

GitHub Copilot, birçok görevi gerçekleştirmeden önce girişinizi gerektirir. Giriş için duraklama, hataları önlemek veya oluşturulan çıkışı tercihlerinize göre özelleştirmek için GitHub Copilot'ı doğru kursa yönlendirme fırsatınızdır.

Çalışırken, düğmeyi kullanarak Continue size sorduğu soruların çoğunu izleyebilir ve kabul edebilirsiniz.

Önemli

Beklenmeyen sonuçlar alırsanız yeni bir sohbet oturumu kullanarak yeniden başlatın.

Bazen giriş sağlamanız gerekir. Giriş girmeniz istendiğinde birkaç farklı an vardır:

  • Kullanıcı kimlik bilgileri - Terminaldeki geçerli işlem bir kullanıcı adı veya parola gerektiriyorsa, sizden bu bilgi istenir.
  • Karar anı - Bazen GitHub Copilot size listede çeşitli seçenekler sunar ve hangisini tercih ettiğinizi sorar.
  • Komut Paleti - GitHub Copilot bazen bir uzantının özelliklerini kullanır ve seçenekler Komut Paleti'nde görüntülenir. Doğru seçimleri yaptıktan sonra GitHub Copilot devam eder.
  • Etkileşimli oturum açma - Azure CLI ve azd CLI kimlik doğrulaması yapmanıza ihtiyaç duyar ve çeşitli kimlik doğrulama mekanizmalarından birini başlatır.

Test etme ve değişiklik isteme

GitHub Copilot tamamlandığında, sitenin tamamlanmış ve işlevsel olduğunu kabul ediyor olabilir. Ancak testinizde sorunlar veya beklenmeyen /istenmeyen uygulama özellikleri bulunabilir.

Sorunu mümkün olduğunca çok ayrıntıyla açıklayan istemleri kullanın. Örneğin, uygulama çalışmıyorsa, tam hata iletisi ve beklenen sonuç da dahil olmak üzere mümkün olduğunca çok bilgi sağlayın.

Akışı kesme

Bazen, GitHub Copilot'ın aynı görevleri tekrar tekrar gerçekleştirmeye çalışan bir döngüde takıldığını veya hiçbir zaman döndürülmeyen bir işlemde takıldığını fark edebilirsiniz. Örneğin, web sitesiyle ilgili sorunları tanılarken GitHub Copilot aşağıdaki gibi bir komut çalıştırmak isteyebilir:

az webapp log tail

GitHub Copilot takıldığında GitHub Copilot'ı birkaç yoldan biriyle kesebilirsiniz:

  • Ctrl+C
  • Sohbette duraklat düğmesini kullanma
  • Sohbet oturumunu sonlandırın ve yeni bir sohbet başlatın

Önemli

Sohbet oturumunu sonlandırmak, oturum sırasında oluşturulan ve istenebilir veya istenmeyebilir tüm bağlamı yok eder.

Az önce ne olduğuyla ilgili bağlam sağlamak ve olası bir çözüme doğru itmek için GitHub Copilot'ı kesintiye uğratdıktan hemen sonra aşağıdaki gibi bir istem ekleyebilirsiniz:

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.

Sonraki Adımlar