{"id":33270,"date":"2025-10-31T22:32:35","date_gmt":"2025-10-31T19:32:35","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/"},"modified":"2025-10-31T22:32:35","modified_gmt":"2025-10-31T19:32:35","slug":"ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/","title":{"rendered":"\u0130lk Django PR&#8217;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber"},"content":{"rendered":"<p><body><\/p>\n<p>Django&#8217;ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.<\/p>\n<p>A\u00e7\u0131k kaynak projelerine katk\u0131da bulunmak, \u00f6zellikle Django gibi b\u00fcy\u00fck ve aktif bir toplulu\u011fa dahil olmak, yaz\u0131l\u0131m geli\u015ftirme kariyerinizde d\u00f6n\u00fcm noktas\u0131 olabilir. Peki, neden bu yola ba\u015fvurmal\u0131s\u0131n\u0131z? \u0130lk olarak, bu s\u00fcre\u00e7 size paha bi\u00e7ilmez bir \u00f6\u011frenme f\u0131rsat\u0131 sunar. Mevcut kod tabanlar\u0131n\u0131 incelemek, deneyimli geli\u015ftiricilerin kod yaz\u0131m prensiplerini ve mimari yakla\u015f\u0131mlar\u0131n\u0131 anlaman\u0131z\u0131 sa\u011flar. Karma\u015f\u0131k sistemlerin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmek, kendi projelerinizde uygulayabilece\u011finiz yeni teknikler \u00f6\u011frenmenize yard\u0131mc\u0131 olur. Ayr\u0131ca, a\u00e7\u0131k kaynak, sekt\u00f6rdeki en iyi uygulamalar\u0131 \u00f6\u011frenmek i\u00e7in harika bir platformdur. \u00d6rne\u011fin, test yazma, kod dok\u00fcmantasyonu veya s\u00fcrekli entegrasyon (CI) s\u00fcre\u00e7leri gibi konularda ger\u00e7ek d\u00fcnya deneyimi kazan\u0131rs\u0131n\u0131z, ki bu deneyimler genellikle ba\u015fka platformlarda edinemeyece\u011finiz kadar de\u011ferlidir.<\/p>\n<p>\u0130kinci olarak, a\u00e7\u0131k kaynak toplulu\u011funun bir par\u00e7as\u0131 olmak, a\u011f\u0131n\u0131z\u0131 geni\u015fletmenizi sa\u011flar. Django&#8217;ya katk\u0131da bulundu\u011funuzda, d\u00fcnya genelindeki di\u011fer geli\u015ftiricilerle etkile\u015fim kurma \u015fans\u0131 yakalars\u0131n\u0131z. Bu etkile\u015fimler, hem teknik bilginizi art\u0131r\u0131r hem de potansiyel i\u015f f\u0131rsatlar\u0131n\u0131n kap\u0131s\u0131n\u0131 aralayabilir. Bir \u00e7ekme iste\u011finiz (PR) birle\u015fti\u011finde, bu sadece bir kod par\u00e7as\u0131n\u0131 ana depoya eklemekten \u00e7ok daha fazlas\u0131d\u0131r; ayn\u0131 zamanda ad\u0131n\u0131z\u0131, becerilerinizi ve problem \u00e7\u00f6zme yetene\u011finizi kan\u0131tlars\u0131n\u0131z. Bu durum, gelecekteki i\u015f ba\u015fvurular\u0131n\u0131zda veya serbest projelerinizde referans olarak g\u00f6sterebilece\u011finiz somut bir ba\u015far\u0131 hikayesi olu\u015fturur. Kariyerinizde \u00f6ne \u00e7\u0131kmak isteyen her geli\u015ftirici i\u00e7in a\u00e7\u0131k kaynak katk\u0131s\u0131, bir nevi dijital portf\u00f6y g\u00f6revi g\u00f6r\u00fcr ve yeteneklerinizi somut bir \u015fekilde sergilemenizi sa\u011flar.<\/p>\n<p>Django gibi k\u00f6kl\u00fc bir proje, milyonlarca web sitesine g\u00fc\u00e7 vermektedir. Bu projenin bir par\u00e7as\u0131 olmak, yapt\u0131\u011f\u0131n\u0131z k\u00fc\u00e7\u00fck bir de\u011fi\u015fikli\u011fin bile geni\u015f bir kullan\u0131c\u0131 kitlesi \u00fczerinde olumlu bir etki yaratabilece\u011fi anlam\u0131na gelir. Belki bir hata d\u00fczeltmesi, belki de k\u00fc\u00e7\u00fck bir dok\u00fcmantasyon iyile\u015ftirmesi&#8230; Her katk\u0131 de\u011ferlidir. Hata d\u00fczeltmeleri, kullan\u0131c\u0131lar\u0131n daha stabil bir deneyim ya\u015famas\u0131n\u0131 sa\u011flarken, dok\u00fcmantasyon iyile\u015ftirmeleri yeni geli\u015ftiricilerin Django&#8217;yu \u00f6\u011frenmesini kolayla\u015ft\u0131r\u0131r. Yeni bir \u00f6zellik eklemek ise projenin yeteneklerini geni\u015fletir ve toplulu\u011fun ihtiya\u00e7lar\u0131na cevap verir. Bu geni\u015f etki alan\u0131, yapt\u0131\u011f\u0131n\u0131z i\u015fin \u00f6nemini ve ki\u015fisel tatmininizi art\u0131r\u0131r. Dolay\u0131s\u0131yla, sadece kod yazmakla kalmaz, ayn\u0131 zamanda k\u00fcresel bir etki yarat\u0131rs\u0131n\u0131z. Bu motivasyon, bir\u00e7ok geli\u015ftiriciyi a\u00e7\u0131k kaynak toplulu\u011funa kat\u0131lmaya te\u015fvik eder.<\/p>\n<p><strong>Vaka Analizi: Dok\u00fcmantasyonla Ba\u015flayan Yolculuk<\/strong><\/p>\n<p>Alice, Django ile yeni tan\u0131\u015fan bir geli\u015ftiriciydi. \u0130lk ba\u015fta b\u00fcy\u00fck bir koda katk\u0131da bulunmaktan \u00e7ekiniyordu. Ancak, Django&#8217;nun resmi dok\u00fcmantasyonunu okurken, k\u00fc\u00e7\u00fck bir paragrafta eski bir komut referans\u0131 oldu\u011funu fark etti. Bu hatay\u0131 d\u00fczeltmek ona basit ve y\u00f6netilebilir bir g\u00f6rev gibi geldi. GitHub \u00fczerinden Django deposunu \u00e7atallad\u0131 (fork), yerel makinesine klonlad\u0131 ve dok\u00fcmantasyon dosyas\u0131nda ilgili sat\u0131r\u0131 d\u00fczeltti. Ard\u0131ndan bu de\u011fi\u015fikli\u011fi commit edip ana depoya bir \u00e7ekme iste\u011fi g\u00f6nderdi. Bu ilk PR, \u00e7ok k\u0131sa s\u00fcrede birle\u015ftirildi. Alice, bu deneyim sayesinde hem Git ve GitHub s\u00fcre\u00e7lerini pratik etmi\u015f oldu hem de Django toplulu\u011fundan olumlu geri bildirimler ald\u0131. Bu k\u00fc\u00e7\u00fck ba\u015flang\u0131\u00e7, onun daha sonra daha karma\u015f\u0131k hatalara el atmas\u0131na ve hatta yeni \u00f6zellikler \u00f6nermesine yol a\u00e7an bir g\u00fcven in\u015fas\u0131 sa\u011flad\u0131. Sonu\u00e7 olarak, a\u00e7\u0131k kayna\u011fa katk\u0131da bulunmak, b\u00fcy\u00fck bir kod taban\u0131na ilk kez dahil olanlar i\u00e7in bile eri\u015filebilir ve \u00f6d\u00fcllendirici bir s\u00fcre\u00e7tir ve bu t\u00fcr ba\u015far\u0131 hikayeleri olduk\u00e7a yayg\u0131nd\u0131r.<\/p>\n<h2>\u0130lk Katk\u0131n\u0131z \u0130\u00e7in Do\u011fru Hedefi Nas\u0131l Belirlersiniz?<\/h2>\n<p>A\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atarken en kritik ad\u0131mlardan biri, \u00fczerinde \u00e7al\u0131\u015facak do\u011fru g\u00f6revi se\u00e7mektir. Django gibi devasa bir projenin kod taban\u0131na dalmak ilk ba\u015fta g\u00f6z korkutucu gelebilir. Bu nedenle, ba\u015flang\u0131\u00e7 i\u00e7in &#8220;good first issue&#8221; etiketli g\u00f6revlere odaklanmak ak\u0131ll\u0131ca bir stratejidir. \u00c7o\u011fu a\u00e7\u0131k kaynak projesi, yeni ba\u015flayanlar\u0131n kolayca \u00fcstesinden gelebilece\u011fi, genellikle daha az karma\u015f\u0131k ve daha yal\u0131t\u0131lm\u0131\u015f sorunlar\u0131 bu etiketle i\u015faretler. Bu t\u00fcr g\u00f6revler, projenin i\u00e7 i\u015fleyi\u015fine a\u015fina olman\u0131z\u0131 sa\u011flarken, ayn\u0131 zamanda Git i\u015f ak\u0131\u015f\u0131n\u0131 ve projenin katk\u0131 k\u0131lavuzlar\u0131n\u0131 \u00f6\u011frenmenize olanak tan\u0131r. Django&#8217;nun GitHub deposundaki &#8220;Issues&#8221; sekmesini ziyaret ederek bu etiketleri kolayca filtreleyebilirsiniz. \u0130lgilendi\u011finiz bir sorunu buldu\u011funuzda, \u00f6ncelikle o sorunu detayl\u0131ca okuyun ve anlamaya \u00e7al\u0131\u015f\u0131n. Sorunu kendi yerel ortam\u0131n\u0131zda yeniden \u00fcretebiliyor musunuz? Bu, \u00e7\u00f6z\u00fcm bulma s\u00fcrecinin ilk ve en \u00f6nemli ad\u0131m\u0131d\u0131r; \u00e7\u00fcnk\u00fc bir sorunu do\u011fru te\u015fhis edemezseniz, do\u011fru \u00e7\u00f6z\u00fcm\u00fc bulman\u0131z da zorla\u015f\u0131r.<\/p>\n<p>Bir sorunu belirledikten sonra, projenin geli\u015ftirme ortam\u0131n\u0131 kendi makinenizde kurman\u0131z gerekir. Bu s\u00fcre\u00e7, projenin katk\u0131 k\u0131lavuzlar\u0131nda (genellikle <code>CONTRIBUTING.md<\/code> veya benzeri bir belge) ayr\u0131nt\u0131l\u0131 olarak a\u00e7\u0131klan\u0131r. Django i\u00e7in bu genellikle Python ve sanal bir ortam (virtualenv) kurulumunu, Django deposunu klonlamay\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklemeyi i\u00e7erir. Sanal ortam kullanmak, sistem genelindeki Python paketlerinizle \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler ve projenin gerektirdi\u011fi belirli ba\u011f\u0131ml\u0131l\u0131k s\u00fcr\u00fcmlerini izole etmenizi sa\u011flar. Bu, temiz ve s\u00fcrd\u00fcr\u00fclebilir bir geli\u015ftirme ortam\u0131 i\u00e7in vazge\u00e7ilmezdir. Ayr\u0131ca, projenin testlerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gerekli ara\u00e7lar\u0131 da kurmal\u0131s\u0131n\u0131z; \u00e7\u00fcnk\u00fc yapt\u0131\u011f\u0131n\u0131z her de\u011fi\u015fikli\u011fin mevcut i\u015flevselli\u011fi bozmad\u0131\u011f\u0131ndan emin olmak esast\u0131r. Bu ad\u0131mlar, yeni bir Django projesi ba\u015flatmaktan biraz farkl\u0131 olabilir, zira do\u011frudan ana Django kaynak kodunu kullan\u0131yorsunuz ve bu, projenin i\u00e7 mimarisine daha derin bir bak\u0131\u015f gerektirir.<\/p>\n<p>Geli\u015ftirme ortam\u0131n\u0131z haz\u0131r oldu\u011funda, se\u00e7ti\u011finiz sorunun bulundu\u011fu ilgili dosyalar\u0131 ve mod\u00fclleri incelemeye ba\u015flay\u0131n. Kod taban\u0131na a\u015final\u0131k kazanmak i\u00e7in zaman ay\u0131r\u0131n. Django&#8217;nun b\u00fcy\u00fck bir yap\u0131ya sahip olmas\u0131, kodun farkl\u0131 b\u00f6l\u00fcmlerini anlamak i\u00e7in biraz sab\u0131r gerektirebilir. \u0130lk ba\u015fta her \u015feyi anlamak zorunda de\u011filsiniz; sadece ilgili k\u0131sm\u0131 \u00e7\u00f6zmek i\u00e7in yeterli bilgiyi edinmeye odaklan\u0131n. Sorunun tam olarak nerede ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131, hangi kod sat\u0131rlar\u0131n\u0131n etkilendi\u011fini ve mevcut durumun neden istenmeyen bir davran\u0131\u015fa yol a\u00e7t\u0131\u011f\u0131n\u0131 anlamaya \u00e7al\u0131\u015f\u0131n. Bu derinlemesine inceleme, hem hatay\u0131 daha etkili bir \u015fekilde d\u00fczeltmenize hem de potansiyel yan etkileri \u00f6ng\u00f6rmenize yard\u0131mc\u0131 olur. Unutmay\u0131n, bir sorunu ne kadar iyi anlarsan\u0131z, o kadar sa\u011flam ve s\u00fcrd\u00fcr\u00fclebilir bir \u00e7\u00f6z\u00fcm \u00fcretebilirsiniz, bu da PR&#8217;\u0131n\u0131z\u0131n kabul edilme \u015fans\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<p>Ayr\u0131ca, se\u00e7ti\u011finiz g\u00f6rev \u00fczerinde \u00e7al\u0131\u015fmaya ba\u015flamadan \u00f6nce, Django toplulu\u011funa niyetinizi belirtmek iyi bir pratiktir. Genellikle, ilgili GitHub issue alt\u0131na bir yorum b\u0131rakarak &#8220;Bu sorun \u00fczerinde \u00e7al\u0131\u015fmak istiyorum&#8221; veya &#8220;Bu hatay\u0131 d\u00fczeltmeye g\u00f6n\u00fcll\u00fcy\u00fcm&#8221; gibi bir ifade kullanabilirsiniz. Bu, di\u011fer geli\u015ftiricilerin ayn\u0131 g\u00f6rev \u00fczerinde gereksiz yere \u00e7al\u0131\u015fmas\u0131n\u0131 engeller ve size g\u00f6rev \u00fczerinde resmi bir &#8220;tahsis&#8221; sa\u011flar. Bu basit ileti\u015fim, a\u00e7\u0131k kaynak i\u015fbirli\u011finin temelini olu\u015fturur ve topluluk i\u00e7indeki sayg\u0131y\u0131 art\u0131r\u0131r. E\u011fer bir sorun \u00fczerinde uzun s\u00fcre \u00e7al\u0131\u015facak olursan\u0131z veya tak\u0131l\u0131rsan\u0131z, yine issue \u00fczerinden g\u00fcncellemeler payla\u015fmak veya yard\u0131m istemek faydal\u0131 olacakt\u0131r; bu, proaktif ve i\u015fbirlik\u00e7i bir yakla\u015f\u0131m sergiledi\u011finizi g\u00f6sterir.<\/p>\n<p>Geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<pre><code>\n# 1. Python Sanal Ortam\u0131n\u0131 Olu\u015fturma ve Aktifle\u015ftirme\npython3 -m venv django_dev_env\nsource django_dev_env\/bin\/activate\n\n# 2. Django Kaynak Kodunu Klonlama (Kendi \u00e7atallad\u0131\u011f\u0131n\u0131z depoyu klonlay\u0131n)\ngit clone https:\/\/github.com\/KULLANICI_ADINIZ\/django.git\ncd django\n\n# 3. Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00fckleme\n# Django'nun kendi geli\u015ftirme ba\u011f\u0131ml\u0131l\u0131klar\u0131 genellikle \"requirements\/py3.txt\" gibi dosyalarda bulunur.\n# Ancak, ana Django projesi genellikle \"pip install -e .\" ile kurulur.\npip install -e .\n\n# Test ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00fcklemek i\u00e7in (gerekliyse)\npip install -r requirements\/py3.txt\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlar, Django'nun ana deposu \u00fczerinde \u00e7al\u0131\u015fmaya ba\u015flamak i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r. Unutmay\u0131n, her proje farkl\u0131 ba\u011f\u0131ml\u0131l\u0131klara ve kurulum ad\u0131mlar\u0131na sahip olabilir, bu nedenle her zaman projenin <code>CONTRIBUTING.md<\/code> veya <code>README.md<\/code> dosyalar\u0131n\u0131 kontrol etmek en iyisidir, \u00e7\u00fcnk\u00fc bu belgeler en g\u00fcncel ve do\u011fru bilgiyi i\u00e7erir.<\/p>\n<h2>\u00c7ekme \u0130ste\u011fi (PR) S\u00fcreci: Ad\u0131m Ad\u0131m Nas\u0131l Olu\u015fturulur?<\/h2>\n<p>\u0130lk katk\u0131n\u0131z i\u00e7in do\u011fru hedefi belirleyip geli\u015ftirme ortam\u0131n\u0131z\u0131 kurduktan sonra, s\u0131ra fiilen kod yazmaya ve \u00e7ekme iste\u011fi (Pull Request - PR) olu\u015fturmaya gelir. Bu s\u00fcre\u00e7, a\u00e7\u0131k kaynak geli\u015ftirmenin kalbidir ve dikkatli ad\u0131mlar gerektirir. \u00d6ncelikle, Django ana deposunun (upstream) bir kopyas\u0131n\u0131 kendi GitHub hesab\u0131n\u0131za \u00e7atallaman\u0131z (fork) gerekir. Bu, ana depodan ba\u011f\u0131ms\u0131z olarak kendi de\u011fi\u015fikliklerinizi yapabilece\u011finiz ki\u015fisel bir kopyad\u0131r. \u00c7atallama i\u015flemi, GitHub aray\u00fcz\u00fcnde \"Fork\" butonuna t\u0131klayarak kolayca yap\u0131labilir. \u00c7atallad\u0131ktan sonra, bu kendi kopyan\u0131z\u0131 yerel makinenize klonlaman\u0131z gerekir. Bu, t\u00fcm dosyalar\u0131 bilgisayar\u0131n\u0131za indirmenizi sa\u011flar ve \u00fczerinde \u00e7al\u0131\u015fmaya ba\u015flayabilirsiniz, b\u00f6ylece ana depoya do\u011frudan m\u00fcdahale etmeden kendi de\u011fi\u015fikliklerinizi g\u00fcvenle ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<pre><code>\n# Kendi \u00e7atallad\u0131\u011f\u0131n\u0131z depoyu klonlay\u0131n\ngit clone https:\/\/github.com\/KULLANICI_ADINIZ\/django.git\ncd django\n    <\/pre>\n<p><\/code><\/p>\n<p>Klonlama i\u015fleminden sonra, mevcut <code>main<\/code> veya <code>master<\/code> bran\u015f\u0131ndan yeni bir \u00e7al\u0131\u015fma bran\u015f\u0131 (feature branch) olu\u015fturman\u0131z \u00e7ok \u00f6nemlidir. Asla do\u011frudan <code>main<\/code> bran\u015f\u0131nda \u00e7al\u0131\u015fmamal\u0131s\u0131n\u0131z. Her yeni \u00f6zellik veya hata d\u00fczeltmesi i\u00e7in ayr\u0131 bir bran\u015f olu\u015fturmak, i\u015finizi yal\u0131t\u0131r ve ana bran\u015f\u0131 temiz tutar. Bran\u015f\u0131n\u0131za anlaml\u0131 bir isim verin, \u00f6rne\u011fin <code>fix\/issue-12345<\/code> veya <code>feature\/add-new-api<\/code>. Bu isimlendirme, ne \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z\u0131 a\u00e7\u0131k\u00e7a belirtir ve di\u011fer geli\u015ftiricilerin anlamas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Ayr\u0131ca, bu yakla\u015f\u0131m, ayn\u0131 anda birden fazla \u00f6zellik \u00fczerinde \u00e7al\u0131\u015fman\u0131za veya farkl\u0131 konular i\u00e7in ayr\u0131 PR'lar olu\u015fturman\u0131za olanak tan\u0131r, bu da i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 daha d\u00fczenli hale getirir.<\/p>\n<pre><code>\n# Yeni bir bran\u015f olu\u015fturun ve ona ge\u00e7i\u015f yap\u0131n\ngit checkout -b fix\/issue-12345\n    <\/pre>\n<p><\/code><\/p>\n<p>Art\u0131k kod de\u011fi\u015fikliklerinizi yapmaya ba\u015flayabilirsiniz. Se\u00e7ti\u011finiz hata d\u00fczeltmesini veya \u00f6zelli\u011fi bu bran\u015f \u00fczerinde geli\u015ftirin. Kodunuzu yazarken, projenin kodlama standartlar\u0131na (PEP 8 gibi) uymaya \u00f6zen g\u00f6sterin. De\u011fi\u015fikliklerinizin mevcut testleri ge\u00e7ti\u011finden ve m\u00fcmk\u00fcnse yeni testler ekledi\u011finizden emin olun. \u00d6zellikle bir hata d\u00fczeltiyorsan\u0131z, hatay\u0131 yeniden \u00fcreten bir test yazmak ve ard\u0131ndan bu testin yeni kodunuzla ge\u00e7ti\u011fini g\u00f6rmek \u00e7ok de\u011ferli bir yakla\u015f\u0131md\u0131r. Bu, sadece hatan\u0131n d\u00fczeltildi\u011fini kan\u0131tlamakla kalmaz, ayn\u0131 zamanda gelecekte ayn\u0131 hatan\u0131n tekrar ortaya \u00e7\u0131kmas\u0131n\u0131 engellemeye yard\u0131mc\u0131 olur. Kodunuzun temiz, okunabilir ve bak\u0131m\u0131 kolay olmas\u0131, PR'\u0131n\u0131z\u0131n kabul edilme \u015fans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<p>De\u011fi\u015fiklikleriniz tamamland\u0131\u011f\u0131nda, bunlar\u0131 yerel deponuza kaydetme (commit) zaman\u0131 gelir. Commit mesajlar\u0131n\u0131z\u0131n a\u00e7\u0131klay\u0131c\u0131 ve \u00f6zl\u00fc olmas\u0131na dikkat edin. \u0130lk sat\u0131rda de\u011fi\u015fikli\u011fin k\u0131sa bir \u00f6zetini sunun, ard\u0131ndan daha fazla detay ekleyin. E\u011fer bir GitHub sorununu d\u00fczeltiyorsan\u0131z, commit mesaj\u0131n\u0131za <code>Fixes #12345<\/code> veya <code>Closes #12345<\/code> gibi bir referans ekleyerek sorunu otomatik olarak kapat\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz. Bu, proje y\u00f6neticilerinin ve di\u011fer geli\u015ftiricilerin de\u011fi\u015fikliklerinizin amac\u0131n\u0131 h\u0131zl\u0131ca anlamas\u0131na yard\u0131mc\u0131 olur ve ilgili sorunun takip edilmesini kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code>\n# De\u011fi\u015fiklikleri haz\u0131rlama\ngit add .\n\n# De\u011fi\u015fiklikleri kaydetme (commit)\ngit commit -m \"Fixes #12345: Handle edge case in user authentication\"\n    <\/pre>\n<p><\/code><\/p>\n<p>Commit i\u015fleminiz bittikten sonra, bu de\u011fi\u015fiklikleri kendi \u00e7atallad\u0131\u011f\u0131n\u0131z GitHub deposuna g\u00f6ndermeniz (push) gerekir. Bu, yerel bran\u015f\u0131n\u0131zdaki kodun GitHub'daki uzak deponuza y\u00fcklenmesini sa\u011flar. <code>git push origin your-branch-name<\/code> komutuyla bunu ger\u00e7ekle\u015ftirebilirsiniz. Bu ad\u0131m, yerel makinenizdeki de\u011fi\u015fikliklerinizi di\u011fer geli\u015ftiricilerin g\u00f6rebilece\u011fi ve inceleyebilece\u011fi bir platforma ta\u015f\u0131man\u0131z anlam\u0131na gelir.<\/p>\n<pre><code>\n# De\u011fi\u015fiklikleri GitHub'a g\u00f6nderme\ngit push origin fix\/issue-12345\n    <\/pre>\n<p><\/code><\/p>\n<p>Son ad\u0131m, bir \u00e7ekme iste\u011fi olu\u015fturmakt\u0131r. GitHub'da kendi \u00e7atallad\u0131\u011f\u0131n\u0131z depoyu ziyaret etti\u011finizde, genellikle yeni push etti\u011finiz bran\u015f i\u00e7in bir \"Compare & pull request\" butonu g\u00f6receksiniz. Bu butona t\u0131klayarak PR olu\u015fturma sayfas\u0131na gidin. PR ba\u015fl\u0131\u011f\u0131n\u0131z\u0131 ve a\u00e7\u0131klaman\u0131z\u0131 dikkatlice doldurun. A\u00e7\u0131klamada, neyi de\u011fi\u015ftirdi\u011finizi, neden de\u011fi\u015ftirdi\u011finizi ve de\u011fi\u015fikli\u011fin hangi sorunu \u00e7\u00f6zd\u00fc\u011f\u00fcn\u00fc detayl\u0131ca belirtin. \u0130lgili GitHub sorunlar\u0131na ve varsa di\u011fer referanslara ba\u011flant\u0131lar ekleyin. Ne kadar a\u00e7\u0131k ve anla\u015f\u0131l\u0131r bir a\u00e7\u0131klama yaparsan\u0131z, inceleme s\u00fcreci o kadar h\u0131zl\u0131 ve sorunsuz ilerler. Ayr\u0131ca, Django'nun katk\u0131 k\u0131lavuzunda belirtilen \u00f6zel bir PR \u015fablonu varsa, mutlaka onu kullan\u0131n. \u0130lk PR'\u0131n\u0131z olu\u015fturuldu\u011funda, otomatik testler \u00e7al\u0131\u015facak ve proje bak\u0131mc\u0131lar\u0131 taraf\u0131ndan incelenmeye ba\u015flanacakt\u0131r. Bu, sizin a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ilk resmi katk\u0131n\u0131zd\u0131r ve gurur duyulacak bir ba\u015far\u0131d\u0131r!<\/p>\n<h3>Kod Kalitesini Art\u0131rma: Daha \u0130yi Bir Yama \u0130\u00e7in \u0130pu\u00e7lar\u0131 Nelerdir?<\/h3>\n<p>\u0130lk \u00e7ekme iste\u011finizi olu\u015fturmak heyecan verici bir ad\u0131md\u0131r, ancak bu yolculuk burada bitmez. Proje bak\u0131mc\u0131lar\u0131 genellikle kod kalitesine, test kapsam\u0131na ve dok\u00fcmantasyona b\u00fcy\u00fck \u00f6nem verirler. Bu nedenle, PR'\u0131n\u0131z\u0131n daha h\u0131zl\u0131 kabul edilmesi ve de\u011ferli bir katk\u0131 olarak g\u00f6r\u00fclmesi i\u00e7in baz\u0131 iyile\u015ftirmeler yapman\u0131z kritik \u00f6neme sahiptir. \u00d6ncelikle, kodunuzun PEP 8 standartlar\u0131na uygun oldu\u011fundan emin olun. PEP 8, Python kodunun nas\u0131l bi\u00e7imlendirilmesi gerekti\u011fini a\u00e7\u0131klayan bir stil rehberidir. Tutarl\u0131 kod stili, kodun okunabilirli\u011fini art\u0131r\u0131r ve di\u011fer geli\u015ftiricilerin projeye entegre olmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. <code>flake8<\/code> veya <code>black<\/code> gibi ara\u00e7lar, kodunuzu otomatik olarak PEP 8 uyumlu hale getirmek veya sorunlar\u0131 tespit etmek i\u00e7in kullan\u0131labilir. Kod kalitesini art\u0131rmak sadece estetik bir mesele de\u011fil, ayn\u0131 zamanda hatalar\u0131n \u00f6nlenmesine de yard\u0131mc\u0131 olur ve uzun vadede projenin s\u00fcrd\u00fcr\u00fclebilirli\u011fini garantiler.<\/p>\n<pre><code>\n# flake8 ile kodunuzu kontrol edin\npip install flake8\nflake8 my_app\/models.py\n    <\/pre>\n<p><\/code><\/p>\n<p>\u0130kinci olarak, kapsaml\u0131 testler yazmak, yamalar\u0131n\u0131z\u0131n kalitesini art\u0131rman\u0131n en etkili yollar\u0131ndan biridir. Sadece bir hata d\u00fczeltmesi yap\u0131yorsan\u0131z bile, bu hatay\u0131 tetikleyen bir test eklemek ve d\u00fczeltmenizle bu testin ge\u00e7ti\u011fini g\u00f6stermek son derece \u00f6nemlidir. Yeni bir \u00f6zellik ekliyorsan\u0131z, bu \u00f6zelli\u011fin t\u00fcm senaryolar\u0131n\u0131 kapsayan bir dizi test yazmal\u0131s\u0131n\u0131z. Django, g\u00fc\u00e7l\u00fc bir test altyap\u0131s\u0131na sahiptir ve <code>unittest<\/code> tabanl\u0131 testler yazman\u0131z\u0131 bekler. Testler, kodunuzun beklenen \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 garanti eder ve gelecekteki de\u011fi\u015fikliklerin mevcut i\u015flevselli\u011fi bozmas\u0131n\u0131 engeller. Proje bak\u0131mc\u0131lar\u0131, iyi test edilmi\u015f kodlara her zaman \u00f6ncelik verirler \u00e7\u00fcnk\u00fc bu, projenin istikrar\u0131n\u0131 korumaya yard\u0131mc\u0131 olur ve yeni kodun ana depoya g\u00fcvenle entegre edilmesini sa\u011flar. Testlerinizi yazarken, farkl\u0131 giri\u015fleri, hata durumlar\u0131n\u0131 ve kenar senaryolar\u0131n\u0131 d\u00fc\u015f\u00fcnmek kodunuzun dayan\u0131kl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<blockquote>\n<p>Uzman \u0130pucu: Testlerinizi yazarken sadece \"ba\u015far\u0131l\u0131\" senaryolar\u0131 de\u011fil, ayn\u0131 zamanda \"ba\u015far\u0131s\u0131z\" veya \"kenar durum\" (edge case) senaryolar\u0131n\u0131 da d\u00fc\u015f\u00fcn\u00fcn. \u00d6rne\u011fin, ge\u00e7ersiz giri\u015fler, bo\u015f de\u011ferler veya beklenmedik kullan\u0131c\u0131 davran\u0131\u015flar\u0131 kar\u015f\u0131s\u0131nda kodunuzun nas\u0131l tepki verdi\u011fini test edin. Bu sayede, daha sa\u011flam ve g\u00fcvenilir bir yama sunmu\u015f olursunuz ve inceleyicilerin g\u00fcvenini kazan\u0131rs\u0131n\u0131z.<\/p>\n<\/blockquote>\n<p>\u00dc\u00e7\u00fcnc\u00fc olarak, dok\u00fcmantasyon g\u00fcncellemeleri, \u00f6zellikle yeni bir \u00f6zellik ekliyorsan\u0131z veya mevcut bir davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftiriyorsan\u0131z, olmazsa olmazd\u0131r. Kullan\u0131c\u0131lar\u0131n veya di\u011fer geli\u015ftiricilerin yeni de\u011fi\u015fiklikleri anlamas\u0131 ve kullanmas\u0131 i\u00e7in g\u00fcncel ve do\u011fru dok\u00fcmantasyona ihtiya\u00e7lar\u0131 vard\u0131r. Bu, Django'nun resmi dok\u00fcmantasyonunda ilgili b\u00f6l\u00fcmleri g\u00fcncellemek veya yaman\u0131zla ilgili yeni bir belge eklemek anlam\u0131na gelebilir. Hatta k\u00fc\u00e7\u00fck bir hata d\u00fczeltmesi bile, e\u011fer kullan\u0131c\u0131ya y\u00f6nelik bir de\u011fi\u015fiklikse, dok\u00fcmantasyonun bir b\u00f6l\u00fcm\u00fcnde belirtilmelidir. \u0130yi dok\u00fcmantasyon, projenin s\u00fcrd\u00fcr\u00fclebilirli\u011fi ve kullan\u0131c\u0131 deneyimi i\u00e7in kritik bir rol oynar. Unutmay\u0131n, iyi kod tek ba\u015f\u0131na yeterli de\u011fildir; nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 anlatan net ve anla\u015f\u0131l\u0131r belgeler de en az kod kadar \u00f6nemlidir.<\/p>\n<p>Son olarak, commit mesajlar\u0131n\u0131z\u0131n kalitesi ve pull request a\u00e7\u0131klaman\u0131z da \u00f6nemlidir. Her commit, yap\u0131lan de\u011fi\u015fikli\u011fi net bir \u015fekilde a\u00e7\u0131klamal\u0131d\u0131r. <code>git commit --amend<\/code> veya <code>git rebase -i<\/code> gibi Git komutlar\u0131n\u0131 kullanarak commit ge\u00e7mi\u015finizi temizleyebilir ve daha anlaml\u0131 hale getirebilirsiniz. Bir PR a\u00e7\u0131klamas\u0131nda, neyi \u00e7\u00f6zd\u00fc\u011f\u00fcn\u00fcz\u00fc, neden bu \u00e7\u00f6z\u00fcm\u00fc se\u00e7ti\u011finizi, testlerinizi nas\u0131l \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z\u0131 ve varsa bilinen k\u0131s\u0131tlamalar\u0131 belirtin. Ne kadar detayl\u0131 ve anla\u015f\u0131l\u0131r bir a\u00e7\u0131klama sunarsan\u0131z, inceleme s\u00fcreci o kadar verimli olur. Unutmay\u0131n, iyi yaz\u0131lm\u0131\u015f bir yama sadece iyi koddan ibaret de\u011fildir; ayn\u0131 zamanda iyi belgelenmi\u015f, iyi test edilmi\u015f ve anla\u015f\u0131l\u0131r bir ba\u011flama sahip olmal\u0131d\u0131r. Bu yakla\u015f\u0131mlar, sizin bir geli\u015ftirici olarak profesyonelli\u011finizi ortaya koyar ve a\u00e7\u0131k kaynak toplulu\u011funda g\u00fcven olu\u015fturur. Bu ad\u0131mlar\u0131 izleyerek, ilk Django PR'\u0131n\u0131z\u0131n kabul edilme \u015fans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilirsiniz.<\/p>\n<h2>Django Geli\u015ftirme Ortam\u0131 ve Test Pratikleri Nas\u0131l Kurulur?<\/h2>\n<p>Django projesine etkili bir \u015fekilde katk\u0131da bulunabilmek i\u00e7in sa\u011flam bir geli\u015ftirme ortam\u0131na ve test pratiklerine hakim olmak \u015fartt\u0131r. Bu, sadece kodunuzun \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmakla kalmaz, ayn\u0131 zamanda mevcut i\u015flevselli\u011fi bozmad\u0131\u011f\u0131n\u0131zdan ve gelecekteki hatalar\u0131 \u00f6nledi\u011finizden emin olman\u0131z\u0131 sa\u011flar. \u00d6ncelikle, sisteminizde Python'\u0131n kurulu oldu\u011fundan emin olun. Django, belirli Python s\u00fcr\u00fcmleriyle uyumludur; bu nedenle Django'nun <code>main<\/code> bran\u015f\u0131n\u0131n hangi Python s\u00fcr\u00fcm\u00fcn\u00fc destekledi\u011fini kontrol etmek \u00f6nemlidir. Genellikle en son kararl\u0131 Python s\u00fcr\u00fcm\u00fc tercih edilir. Python kurulduktan sonra, sanal ortam (virtual environment) olu\u015fturmak vazge\u00e7ilmez bir ad\u0131md\u0131r. Sanal ortamlar, projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole etmenizi sa\u011flar, b\u00f6ylece farkl\u0131 projelerdeki veya sisteminizdeki Python kurulumlar\u0131ndaki \u00e7ak\u0131\u015fmalar\u0131 \u00f6nlersiniz. Bu izolasyon, hem geli\u015ftirme s\u00fcrecinizi sorunsuz hale getirir hem de ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi konusunda size b\u00fcy\u00fck esneklik sa\u011flar.<\/p>\n<pre><code>\n# Sanal ortam\u0131 olu\u015fturma (e\u011fer hen\u00fcz yapmad\u0131ysan\u0131z)\npython3 -m venv django_env\n\n# Sanal ortam\u0131 aktifle\u015ftirme\nsource django_env\/bin\/activate # Linux\/macOS\n# veya\ndjango_env\\Scripts\\activate # Windows\n    <\/pre>\n<p><\/code><\/p>\n<p>Sanal ortam\u0131n\u0131z aktifken, Django'nun ana reposunu GitHub'dan klonlaman\u0131z gerekir. Daha \u00f6nce kendi \u00e7atallad\u0131\u011f\u0131n\u0131z depoyu klonlam\u0131\u015f olmal\u0131s\u0131n\u0131z. Klonlad\u0131ktan sonra, projenin k\u00f6k dizinine gidin ve Django'yu \"editable\" modda kurun. Bu, <code>pip install -e .<\/code> komutuyla yap\u0131l\u0131r ve Django kod taban\u0131ndaki de\u011fi\u015fikliklerinizin an\u0131nda sanal ortam\u0131n\u0131zda yans\u0131mas\u0131n\u0131 sa\u011flar. Bu sayede, her de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda yeniden kurulum yapman\u0131za gerek kalmaz. Ayr\u0131ca, Django'nun kendi testleri i\u00e7in gerekli olan ek ba\u011f\u0131ml\u0131l\u0131klar\u0131 da kurman\u0131z gerekebilir. Bu ba\u011f\u0131ml\u0131l\u0131klar genellikle <code>requirements\/py3.txt<\/code> gibi dosyalarda listelenir. Bu dosyadaki gereksinimleri y\u00fcklemek, t\u00fcm testlerin sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in \u00f6nemlidir. Bu ba\u011f\u0131ml\u0131l\u0131klar, farkl\u0131 veritaban\u0131 s\u00fcr\u00fcc\u00fcleri, test k\u00fct\u00fcphaneleri veya di\u011fer yard\u0131mc\u0131 ara\u00e7lar olabilir.<\/p>\n<pre><code>\n# Django reposuna git\ncd \/path\/to\/your\/cloned\/django\/repo\n\n# Django'yu d\u00fczenlenebilir modda kurun\npip install -e .\n\n# Testler i\u00e7in gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckleyin\npip install -r requirements\/py3.txt\n    <\/pre>\n<p><\/code><\/p>\n<p>Kurulum tamamland\u0131ktan sonra, Django'nun kapsaml\u0131 test paketini \u00e7al\u0131\u015ft\u0131rmaya haz\u0131rs\u0131n\u0131z. Django, t\u00fcm testlerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in \u00f6zel bir <code>runtests.py<\/code> beti\u011fi sa\u011flar. Bu beti\u011fi, projenin k\u00f6k dizininden \u00e7al\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z. T\u00fcm testleri \u00e7al\u0131\u015ft\u0131rmak biraz zaman alabilir, bu nedenle genellikle sadece de\u011fi\u015ftirdi\u011finiz kodla ilgili testleri veya belirledi\u011finiz mod\u00fcl\u00fcn testlerini \u00e7al\u0131\u015ft\u0131rmak daha verimlidir. \u00d6rne\u011fin, <code>auth<\/code> uygulamas\u0131nda bir de\u011fi\u015fiklik yapt\u0131ysan\u0131z, sadece o uygulaman\u0131n testlerini \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu, geri bildirim d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131r\u0131r ve geli\u015ftirme s\u00fcrecinizi daha dinamik hale getirir. Belirli testleri hedefleyerek, de\u011fi\u015fikliklerinizin yaln\u0131zca ilgili b\u00f6l\u00fcmleri etkiledi\u011finden emin olabilirsiniz.<\/p>\n<pre><code>\n# T\u00fcm testleri \u00e7al\u0131\u015ft\u0131rma\npython runtests.py\n\n# Belirli bir uygulaman\u0131n testlerini \u00e7al\u0131\u015ft\u0131rma (\u00f6rn: auth uygulamas\u0131)\npython runtests.py auth\n\n# Belirli bir mod\u00fcldeki testleri \u00e7al\u0131\u015ft\u0131rma (\u00f6rn: auth.tests.test_models)\npython runtests.py auth.tests.test_models\n\n# Belirli bir test s\u0131n\u0131f\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rma\npython runtests.py auth.tests.test_models.UserModelTest\n\n# Belirli bir test metodunu \u00e7al\u0131\u015ft\u0131rma\npython runtests.py auth.tests.test_models.UserModelTest.test_create_user\n    <\/pre>\n<p><\/code><\/p>\n<p>Test coverage raporlar\u0131 almak da kodunuzun ne kadar\u0131n\u0131n testler taraf\u0131ndan kapsand\u0131\u011f\u0131n\u0131 anlamak i\u00e7in harika bir yoldur. <code>coverage.py<\/code> gibi ara\u00e7lar kullanarak, hangi kod sat\u0131rlar\u0131n\u0131n test edilmedi\u011fini g\u00f6rebilir ve bu alanlar i\u00e7in ek testler yazabilirsiniz. Y\u00fcksek test kapsam\u0131, yamalar\u0131n\u0131z\u0131n kalitesini ve g\u00fcvenilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Django'nun kendi geli\u015ftirme ortam\u0131nda bu t\u00fcr ara\u00e7lar\u0131n nas\u0131l kullan\u0131laca\u011f\u0131na dair y\u00f6nergeler bulunabilir. Unutmay\u0131n, a\u00e7\u0131k kaynak projelerinde kod g\u00f6nderirken, de\u011fi\u015fikliklerinizin mevcut testleri ge\u00e7mesi ve ideal olarak yeni testler eklemesi beklenir. Bu pratikler, yaln\u0131zca sizin i\u00e7in de\u011fil, t\u00fcm topluluk i\u00e7in daha istikrarl\u0131 bir Django s\u00fcr\u00fcm\u00fc anlam\u0131na gelir ve projenin uzun vadeli sa\u011fl\u0131\u011f\u0131 i\u00e7in elzemdir.<\/p>\n<div style=\"background-color: #f0f0f0; padding: 15px; border-left: 5px solid #007bff; margin-top: 20px;\">\n<h3>Mobil Uyumluluk \u0130pu\u00e7lar\u0131: Geli\u015ftirme Komutlar\u0131 K\u00fc\u00e7\u00fck Ekranlarda Nas\u0131l G\u00f6sterilir?<\/h3>\n<p>Geli\u015ftirme komutlar\u0131 veya kod bloklar\u0131, mobil cihazlarda okunabilirlik a\u00e7\u0131s\u0131ndan sorun yaratabilir. Uzun komut sat\u0131rlar\u0131n\u0131n ekran\u0131n d\u0131\u015f\u0131na ta\u015fmas\u0131n\u0131 engellemek i\u00e7in CSS'in esnekliklerini kullanabilirsiniz. \u00d6rne\u011fin, a\u015fa\u011f\u0131daki gibi bir yap\u0131, kod bloklar\u0131n\u0131n yatay olarak kayd\u0131r\u0131labilir olmas\u0131n\u0131 sa\u011flar:<\/p>\n<pre><code style=\"white-space: pre-wrap; word-break: break-all; overflow-x: auto;\">\n<div style=\"overflow-x: auto; max-width: 100%;\">\n  <pre><code>\n    # Bu uzun bir komut sat\u0131r\u0131 \u00f6rne\u011fidir ve mobil ekranda ta\u015fabilir.\n    # overflow-x: auto; sayesinde kayd\u0131r\u0131labilir hale gelecektir.\n    python runtests.py auth.tests.test_models.UserModelTest.test_create_user --settings=tests.settings --verbosity=2 --failfast\n  <\/code><\/pre>\n<\/div>\n<p>        <\/code><\/p>\n<p>B\u00f6ylece, kullan\u0131c\u0131lar uzun kod sat\u0131rlar\u0131n\u0131 k\u00fc\u00e7\u00fck ekranlarda bile rahat\u00e7a okuyabilir ve kopyalayabilir. <code>pre-wrap<\/code> ve <code>word-break: break-all<\/code> gibi stiller de metinlerin daha iyi da\u011f\u0131lmas\u0131n\u0131 sa\u011flar ve genel kullan\u0131c\u0131 deneyimini iyile\u015ftirir.<\/p>\n<\/p><\/div>\n<h2>\u0130yile\u015ftirilmi\u015f PR: Geri Bildirimleri Y\u00f6netme ve Yamay\u0131 G\u00fcncelleme<\/h2>\n<p>\u00c7ekme iste\u011finizi (PR) g\u00f6nderdikten sonraki a\u015fama, kod inceleme (code review) s\u00fcrecidir. Bu s\u00fcre\u00e7, a\u00e7\u0131k kaynak katk\u0131s\u0131n\u0131n en de\u011ferli ve \u00f6\u011fretici b\u00f6l\u00fcmlerinden biridir. Deneyimli geli\u015ftiriciler, kodunuzu g\u00f6zden ge\u00e7irecek, potansiyel sorunlar\u0131, iyile\u015ftirme alanlar\u0131n\u0131 veya projeye daha uygun yakla\u015f\u0131mlar\u0131 belirtecektir. Geri bildirimler genellikle GitHub'daki PR sayfas\u0131nda yorumlar \u015feklinde gelir. Bu yorumlar, kod kalitesi, performans, g\u00fcvenlik, okunabilirlik, test kapsam\u0131 veya dok\u00fcmantasyon eksiklikleri hakk\u0131nda olabilir. Bu a\u015famada \u00f6nemli olan, geri bildirimleri ki\u015fisel bir ele\u015ftiri olarak alg\u0131lamak yerine, kodunuzu ve kendi geli\u015ftirme becerilerinizi iyile\u015ftirmek i\u00e7in bir f\u0131rsat olarak g\u00f6rmektir. Her yorumu dikkatlice okuyun ve anlamaya \u00e7al\u0131\u015f\u0131n; e\u011fer bir \u015fey belirsizse, soru sormaktan \u00e7ekinmeyin. Unutmay\u0131n, bu geri bildirimler, kodunuzu daha sa\u011flam, daha verimli ve daha profesyonel hale getirmenize yard\u0131mc\u0131 olmay\u0131 ama\u00e7lar.<\/p>\n<p>Geri bildirimleri ald\u0131ktan sonra, yamay\u0131 g\u00fcncelleme zaman\u0131 gelir. Bu genellikle, yerel \u00e7al\u0131\u015fma bran\u015f\u0131n\u0131zda ek de\u011fi\u015fiklikler yapmay\u0131, yeni commit'ler olu\u015fturmay\u0131 ve bunlar\u0131 tekrar GitHub'a g\u00f6ndermeyi i\u00e7erir. E\u011fer gelen geri bildirimler k\u00fc\u00e7\u00fck d\u00fczeltmeler veya stil de\u011fi\u015fiklikleri gerektiriyorsa, yeni bir commit olu\u015fturup bunu mevcut PR'\u0131n\u0131za push edebilirsiniz. GitHub, PR'\u0131n\u0131za yap\u0131lan t\u00fcm yeni commit'leri otomatik olarak alg\u0131layacak ve inceleyenlere g\u00f6sterecektir. Ancak, bazen geri bildirimler daha b\u00fcy\u00fck yap\u0131sal de\u011fi\u015fiklikler gerektirebilir veya birden fazla k\u00fc\u00e7\u00fck commit'i tek bir mant\u0131ksal birime s\u0131k\u0131\u015ft\u0131rman\u0131z (squash etmeniz) istenebilir. Bu, <code>git rebase -i<\/code> gibi komutlarla yap\u0131labilir ve commit ge\u00e7mi\u015finizin daha temiz ve anla\u015f\u0131l\u0131r olmas\u0131n\u0131 sa\u011flar. Temiz bir commit ge\u00e7mi\u015fi, gelecekteki bak\u0131m ve hata ay\u0131klama s\u00fcre\u00e7lerini kolayla\u015ft\u0131r\u0131r ve projenin genel kalitesine katk\u0131da bulunur.<\/p>\n<pre><code>\n# Son N commit'i interaktif olarak rebase etmek i\u00e7in\ngit rebase -i HEAD~N\n\n# \u00d6rne\u011fin, son 3 commit'i d\u00fczenlemek i\u00e7in:\ngit rebase -i HEAD~3\n    <\/pre>\n<p><\/code><\/p>\n<p>Yamay\u0131 g\u00fcncellerken, her de\u011fi\u015fiklikten sonra mevcut testleri tekrar \u00e7al\u0131\u015ft\u0131rmak ve m\u00fcmk\u00fcnse yeni ekledi\u011finiz testlerin hala ge\u00e7ti\u011finden emin olmak hayati \u00f6neme sahiptir. Yapt\u0131\u011f\u0131n\u0131z bir d\u00fczeltmenin ba\u015fka bir yerde istenmeyen bir etkiye yol a\u00e7mad\u0131\u011f\u0131ndan emin olman\u0131z gerekir. E\u011fer test kapsam\u0131n\u0131 art\u0131rman\u0131z isteniyorsa, ilgili senaryolar\u0131 kapsayan yeni testler ekleyin. Ayr\u0131ca, dok\u00fcmantasyonun da g\u00fcncel kalmas\u0131na dikkat edin. Yap\u0131lan her \u00f6nemli de\u011fi\u015fikli\u011fin, kullan\u0131c\u0131 veya geli\u015ftirici belgelerine yans\u0131d\u0131\u011f\u0131ndan emin olun. Kod inceleme s\u00fcreci bazen birka\u00e7 tur s\u00fcrebilir, bu tamamen normaldir. Sab\u0131rl\u0131 olun ve her geri bildirimi titizlikle uygulay\u0131n. Bu tekrarl\u0131 s\u00fcre\u00e7, hem kodunuzun kalitesini art\u0131r\u0131r hem de problem \u00e7\u00f6zme ve ileti\u015fim becerilerinizi geli\u015ftirir.<\/p>\n<p>Geri bildirimleri uygulad\u0131ktan ve yamay\u0131 g\u00fcncelledikten sonra, inceleyenlere bir yorum b\u0131rakarak de\u011fi\u015fikliklerinizi \u00f6zetleyin ve PR'\u0131 tekrar incelemeye haz\u0131r oldu\u011funu bildirin. \u00d6rne\u011fin, \"Geri bildirimleriniz do\u011frultusunda gerekli de\u011fi\u015fiklikleri yapt\u0131m. \u00d6zellikle test kapsam\u0131n\u0131 art\u0131rd\u0131m ve dok\u00fcmantasyonu g\u00fcncelledim.\" gibi bir ifade kullanabilirsiniz. A\u00e7\u0131k ve proaktif ileti\u015fim, inceleme s\u00fcrecinin h\u0131zlanmas\u0131na yard\u0131mc\u0131 olur ve sizin bir tak\u0131m oyuncusu oldu\u011funuzu g\u00f6sterir. Ba\u015far\u0131l\u0131 bir kod incelemesi ve kabul edilen bir PR, sadece bir kod par\u00e7as\u0131n\u0131n ana depoya eklenmesi de\u011fil, ayn\u0131 zamanda sizin bir geli\u015ftirici olarak b\u00fcy\u00fcmenizin ve a\u00e7\u0131k kaynak toplulu\u011funa de\u011fer katman\u0131z\u0131n bir i\u015faretidir. Her ba\u015far\u0131l\u0131 katk\u0131, kendinize olan g\u00fcveninizi art\u0131r\u0131r ve daha b\u00fcy\u00fck projelere cesaretle ad\u0131m atman\u0131z i\u00e7in sizi te\u015fvik eder.<\/p>\n<table style=\"width:100%; border-collapse: collapse; margin-top: 20px;\">\n<thead>\n<tr style=\"background-color: #f2f2f2;\">\n<th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">S\u0131k\u00e7a Gelen Review Yorumlar\u0131<\/th>\n<th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">\u00c7\u00f6z\u00fcm Yakla\u015f\u0131mlar\u0131<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\"PEP 8 ihlalleri mevcut.\"<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\"><code>flake8<\/code> veya <code>black<\/code> gibi ara\u00e7larla kodunuzu otomatik olarak bi\u00e7imlendirin veya manuel olarak d\u00fczeltin. Bu ara\u00e7lar, tutarl\u0131 bir kod stili sa\u011flamak i\u00e7in idealdir.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\"Test kapsam\u0131 yetersiz.\"<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">De\u011fi\u015fikli\u011finizin t\u00fcm olas\u0131 senaryolar\u0131n\u0131 (ba\u015far\u0131l\u0131, ba\u015far\u0131s\u0131z, kenar durumlar) kapsayan yeni testler ekleyin. <code>coverage.py<\/code> gibi ara\u00e7larla eksik test alanlar\u0131n\u0131 belirleyebilirsiniz.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\"Dok\u00fcmantasyon g\u00fcncellenmeli.\"<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Django'nun ilgili dok\u00fcmantasyon b\u00f6l\u00fcmlerini de\u011fi\u015fikli\u011finizle uyumlu hale getirin veya yeni belgeler ekleyin. Kullan\u0131c\u0131lar\u0131n yeni \u00f6zelli\u011fi kolayca anlamas\u0131n\u0131 sa\u011flay\u0131n.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\"Commit ge\u00e7mi\u015fi da\u011f\u0131n\u0131k, l\u00fctfen squash edin.\"<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\"><code>git rebase -i HEAD~N<\/code> komutunu kullanarak ilgili commit'leri tek bir mant\u0131ksal birime s\u0131k\u0131\u015ft\u0131r\u0131n. Bu, temiz ve anla\u015f\u0131l\u0131r bir ge\u00e7mi\u015f sa\u011flar.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">\"Bu kod performans\u0131 etkileyebilir mi?\"<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Performans testleri yap\u0131n, daha verimli algoritmalar veya veri yap\u0131lar\u0131 kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn ve bulgular\u0131n\u0131z\u0131 PR a\u00e7\u0131klamas\u0131na ekleyin. Potansiyel performans etkilerini net bir \u015fekilde belirtin.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Sonu\u00e7: \u0130lk Django PR'\u0131n\u0131z\u0131n \u00d6nemi ve Gelecek Katk\u0131lar<\/h2>\n<p>\u0130lk Django \u00e7ekme iste\u011finizi (PR) ba\u015far\u0131yla tamamlamak, a\u00e7\u0131k kaynak geli\u015ftirme d\u00fcnyas\u0131na att\u0131\u011f\u0131n\u0131z \u00f6nemli bir ad\u0131md\u0131r. Bu s\u00fcre\u00e7, sadece teknik becerilerinizi geli\u015ftirmekle kalmaz, ayn\u0131 zamanda Git i\u015f ak\u0131\u015f\u0131na, kod inceleme s\u00fcre\u00e7lerine ve geni\u015f bir geli\u015ftirici toplulu\u011fuyla etkile\u015fime girme prati\u011fi kazanman\u0131z\u0131 sa\u011flar. Ba\u015flang\u0131\u00e7ta basit bir hata d\u00fczeltmesi veya dok\u00fcmantasyon iyile\u015ftirmesiyle ad\u0131m atman\u0131z, zamanla daha karma\u015f\u0131k g\u00f6revlere y\u00f6nelebilece\u011finiz bir g\u00fcven ve bilgi birikimi olu\u015fturur. A\u00e7\u0131k kaynak, s\u00fcrekli \u00f6\u011frenme ve i\u015fbirli\u011fine dayal\u0131 bir ortam sunar; dolay\u0131s\u0131yla her PR, projenin b\u00fcy\u00fcmesine ve geli\u015fmesine de\u011ferli bir katk\u0131da bulunur.<\/p>\n<p>Unutmay\u0131n ki a\u00e7\u0131k kaynak katk\u0131s\u0131 bir maratondur, sprint de\u011fil. \u0130lk PR'\u0131n\u0131z\u0131n kabul edilmesi bile bazen zaman alabilir ve birden fazla d\u00fczeltme turu gerektirebilir. Sab\u0131r, \u00f6\u011frenmeye a\u00e7\u0131kl\u0131k ve yap\u0131c\u0131 geri bildirimlere uyum sa\u011flama yetene\u011fi, bu yolculukta ba\u015far\u0131n\u0131n anahtarlar\u0131d\u0131r. Her kabul edilen veya \u00fczerine yorum yap\u0131lan PR, sizi daha iyi bir yaz\u0131l\u0131mc\u0131 yapar. Bu deneyim, portf\u00f6y\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirir, a\u011f\u0131n\u0131z\u0131 geni\u015fletir ve Django gibi kritik bir projenin par\u00e7as\u0131 olman\u0131n gururunu ya\u015fat\u0131r. Gelecekteki katk\u0131lar\u0131n\u0131zla, a\u00e7\u0131k kaynak toplulu\u011funa olan etkinizi art\u0131rmaya devam edebilirsiniz. \u015eimdi ilk Django PR'\u0131n\u0131z\u0131 olu\u015fturma zaman\u0131!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li>\n            <strong>S: \u0130lk Django PR'\u0131m i\u00e7in ne kadar zaman ay\u0131rmal\u0131y\u0131m?<\/strong><br \/>\n            C: Bu tamamen g\u00f6revin karma\u015f\u0131kl\u0131\u011f\u0131na ve sizin deneyim seviyenize ba\u011fl\u0131d\u0131r. Basit bir dok\u00fcmantasyon hatas\u0131 birka\u00e7 saat s\u00fcrebilirken, daha karma\u015f\u0131k bir hata d\u00fczeltmesi veya k\u00fc\u00e7\u00fck bir \u00f6zellik birka\u00e7 g\u00fcn s\u00fcrebilir. \u00d6nemli olan, kendinizi strese sokmadan, \u00f6\u011frenme odakl\u0131 bir yakla\u015f\u0131mla ilerlemektir. Ba\u015flang\u0131\u00e7ta k\u00fc\u00e7\u00fck g\u00f6revlerle ba\u015flayarak s\u00fcreci deneyimlemek en do\u011frusudur. Sab\u0131rl\u0131 ve d\u00fczenli \u00e7al\u0131\u015fmak, bu s\u00fcre\u00e7te en iyi yol arkada\u015f\u0131n\u0131z olacakt\u0131r.\n        <\/li>\n<li>\n            <strong>S: PR'\u0131m reddedilirse ne yapmal\u0131y\u0131m?<\/strong><br \/>\n            C: Reddedilme, a\u00e7\u0131k kaynak katk\u0131s\u0131n\u0131n do\u011fal bir par\u00e7as\u0131d\u0131r ve demoralize olman\u0131za gerek yoktur. Genellikle, reddedilme nedenleri ve iyile\u015ftirme i\u00e7in \u00f6nerilerle birlikte gelir. Geri bildirimleri dikkatlice okuyun, anlamad\u0131\u011f\u0131n\u0131z yerleri sorun ve kodunuzu bu geri bildirimler do\u011frultusunda iyile\u015ftirerek tekrar deneyin. Bu, \u00f6\u011frenme ve geli\u015fme s\u00fcrecinin bir par\u00e7as\u0131d\u0131r ve sizi daha g\u00fc\u00e7l\u00fc bir geli\u015ftirici yapar. Her reddedilme, yeni bir \u00f6\u011frenme f\u0131rsat\u0131d\u0131r.\n        <\/li>\n<li>\n            <strong>S: Hangi konularda katk\u0131da bulunabilirim?<\/strong><br \/>\n            C: Django'ya sadece kod yazarak de\u011fil, ayn\u0131 zamanda dok\u00fcmantasyon \u00e7evirileri, yeni ba\u015flayanlar i\u00e7in rehberler yazma, mevcut sorunlar\u0131 test etme ve yeniden \u00fcretme, hata raporlama veya topluluk forumlar\u0131nda yard\u0131m etme gibi bir\u00e7ok farkl\u0131 yolla katk\u0131da bulunabilirsiniz. \"Good first issue\" etiketleri genellikle kod taban\u0131na ilk ad\u0131m\u0131 atmak i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Hatta basit bir yaz\u0131m hatas\u0131 d\u00fczeltmesi bile de\u011ferli bir katk\u0131d\u0131r.\n        <\/li>\n<li>\n            <strong>S: Django'nun katk\u0131 k\u0131lavuzunu nerede bulabilirim?<\/strong><br \/>\n            C: Django'nun resmi katk\u0131 k\u0131lavuzu genellikle projenin GitHub deposunun k\u00f6k dizininde <code>CONTRIBUTING.md<\/code> ad\u0131nda bir dosyada veya resmi Django web sitesinin \"Development\" b\u00f6l\u00fcm\u00fcnde bulunur. Bu k\u0131lavuz, projenin beklentileri, kodlama standartlar\u0131 ve i\u015f ak\u0131\u015f\u0131 hakk\u0131nda detayl\u0131 bilgi i\u00e7erir ve mutlaka okunmal\u0131d\u0131r. Bu belge, ba\u015far\u0131l\u0131 bir PR i\u00e7in yol haritan\u0131zd\u0131r.\n        <\/li>\n<li>\n            <strong>S: \u0130lk PR'\u0131m\u0131 g\u00f6nderdikten sonra ne kadar beklemeliyim?<\/strong><br \/>\n            C: \u0130nceleme s\u00fcresi, projenin b\u00fcy\u00fckl\u00fc\u011f\u00fcne, bak\u0131mc\u0131lar\u0131n yo\u011funlu\u011funa ve PR'\u0131n\u0131z\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na g\u00f6re de\u011fi\u015fir. B\u00fcy\u00fck projelerde bu s\u00fcre birka\u00e7 g\u00fcnden birka\u00e7 haftaya kadar s\u00fcrebilir. Sab\u0131rl\u0131 olun. E\u011fer uzun s\u00fcre ses \u00e7\u0131kmazsa, PR sayfas\u0131nda kibarca bir \"ping\" atarak durumunu sorabilirsiniz, ancak bunu yapmadan \u00f6nce makul bir s\u00fcre bekledi\u011finizden emin olun (\u00f6rn. 1 hafta). A\u015f\u0131r\u0131 \u0131srarc\u0131 olmak, bak\u0131mc\u0131lar\u0131 rahats\u0131z edebilir.\n        <\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Django&#8217;ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR)&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-33270","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u0130lk Django PR&#039;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber<\/title>\n<meta name=\"description\" content=\"Django&#039;ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0130lk Django PR&#039;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber\" \/>\n<meta property=\"og:description\" content=\"Django&#039;ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-31T19:32:35+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"\u0130lk Django PR&#8217;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber\",\"datePublished\":\"2025-10-31T19:32:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\"},\"wordCount\":5129,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\",\"name\":\"\u0130lk Django PR'\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-31T19:32:35+00:00\",\"description\":\"Django'ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0130lk Django PR&#8217;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u0130lk Django PR'\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber","description":"Django'ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"\u0130lk Django PR'\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber","og_description":"Django'ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.","og_url":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-31T19:32:35+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"\u0130lk Django PR&#8217;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber","datePublished":"2025-10-31T19:32:35+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/"},"wordCount":5129,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/","name":"\u0130lk Django PR'\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-31T19:32:35+00:00","description":"Django'ya ilk katk\u0131n\u0131z\u0131 yapmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehber, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atman\u0131z, ilk \u00e7ekme iste\u011finizi (PR) olu\u015fturman\u0131z ve kod kalitenizi art\u0131rarak iyile\u015ftirilmi\u015f bir yama sunman\u0131z i\u00e7in ad\u0131m ad\u0131m yol g\u00f6steriyor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-django-priniz-sifirdan-iyilestirilmis-yama-surecine-kapsamli-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0130lk Django PR&#8217;\u0131n\u0131z: S\u0131f\u0131rdan \u0130yile\u015ftirilmi\u015f Yama S\u00fcrecine Kapsaml\u0131 Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33270"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33270\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}