{"id":36090,"date":"2025-12-08T02:40:44","date_gmt":"2025-12-07T23:40:44","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36090"},"modified":"2025-12-08T02:40:44","modified_gmt":"2025-12-07T23:40:44","slug":"django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/","title":{"rendered":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi<\/h2>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131nda h\u0131zla y\u00fckselen, g\u00fc\u00e7l\u00fc ve verimli bir \u00e7er\u00e7eve olan Django, Python dilinin g\u00fcc\u00fcn\u00fc arkas\u0131na alarak karma\u015f\u0131k web uygulamalar\u0131n\u0131n k\u0131sa s\u00fcrede geli\u015ftirilmesine olanak tan\u0131r. &#8220;Pilleri dahil&#8221; felsefesiyle yola \u00e7\u0131kan Django, geli\u015ftiricilerin tekrar eden g\u00f6revlerle u\u011fra\u015fmak yerine uygulaman\u0131n \u00f6z\u00fcne odaklanmas\u0131n\u0131 sa\u011flayan bir\u00e7ok haz\u0131r bile\u015fen sunar. Bu makalede, pop\u00fcler ve kararl\u0131 bir i\u015fletim sistemi olan Ubuntu 22.04 \u00fczerinde Django&#8217;yu nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temel bir geli\u015ftirme ortam\u0131n\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<p>Django&#8217;nun sundu\u011fu avantajlar aras\u0131nda g\u00fc\u00e7l\u00fc bir ORM (Object-Relational Mapper), otomatik y\u00f6netici paneli, kimlik do\u011frulama sistemi, URL y\u00f6nlendirme, \u015fablonlama motoru ve g\u00fcvenlik mekanizmalar\u0131 bulunur. T\u00fcm bu \u00f6zellikler, b\u00fcy\u00fck \u00f6l\u00e7ekli ve g\u00fcvenli web uygulamalar\u0131 olu\u015fturmak i\u00e7in sa\u011flam bir temel sa\u011flar. Ubuntu 22.04 ise uzun s\u00fcreli deste\u011fi (LTS) ve geni\u015f topluluk deste\u011fi sayesinde sunucu ortamlar\u0131nda ve geli\u015ftirme makinelerinde s\u0131k\u00e7a tercih edilen bir da\u011f\u0131t\u0131md\u0131r. Bu kombinasyon, geli\u015ftiriciler i\u00e7in verimli ve stabil bir ortam sunar.<\/p>\n<p>Bu rehberde, Ubuntu 22.04 sisteminizi g\u00fcncel tutmaktan, Python ve sanal ortamlar\u0131 kurmaya, Django&#8217;yu y\u00fcklemeye, ilk projenizi ve uygulaman\u0131z\u0131 olu\u015fturmaya kadar t\u00fcm ad\u0131mlar\u0131 kapsaml\u0131 bir \u015fekilde ele alaca\u011f\u0131z. Amac\u0131m\u0131z, hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in net, anla\u015f\u0131l\u0131r ve uygulanabilir bir yol haritas\u0131 sunmakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler ve Sistem G\u00fcncelleme<\/h3>\n<p>Django geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmaya ba\u015flamadan \u00f6nce, sisteminizin g\u00fcncel oldu\u011fundan ve temel gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olmal\u0131y\u0131z. Bu, olas\u0131 uyumluluk sorunlar\u0131n\u0131 \u00f6nlemek ve en yeni g\u00fcvenlik g\u00fcncellemelerine sahip olmak i\u00e7in kritik bir ad\u0131md\u0131r.<\/p>\n<h4>Ubuntu 22.04 Sistem Gereksinimleri<\/h4>\n<p>*   <strong>\u0130\u015fletim Sistemi:<\/strong> Ubuntu 22.04 (Jammy Jellyfish) kurulu bir sistem.<br \/>\n*   <strong>Kullan\u0131c\u0131 Haklar\u0131:<\/strong> <code>sudo<\/code> ayr\u0131cal\u0131klar\u0131na sahip bir kullan\u0131c\u0131 hesab\u0131.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Paketleri indirmek ve kurmak i\u00e7in aktif bir internet ba\u011flant\u0131s\u0131.<br \/>\n*   <strong>Temel Terminal Bilgisi:<\/strong> Linux komut sat\u0131r\u0131 aray\u00fcz\u00fcn\u00fc kullanma yetene\u011fi.<\/p>\n<h4>Sistem Paketlerini G\u00fcncelleme<\/h4>\n<p>\u0130lk ad\u0131m olarak, sisteminizdeki paket listesini g\u00fcncelleyip mevcut paketleri y\u00fckseltmek \u00f6nemlidir. Bu, en son g\u00fcvenlik yamalar\u0131n\u0131 ve yaz\u0131l\u0131m s\u00fcr\u00fcmlerini alman\u0131z\u0131 sa\u011flar. Terminali a\u00e7\u0131n (Ctrl+Alt+T) ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p>*   <code>sudo apt update<\/code>: Bu komut, yerel paket dizininizi Ubuntu depolar\u0131ndaki en son paket bilgileriyle senkronize eder. B\u00f6ylece sisteminiz, hangi paketlerin g\u00fcncel s\u00fcr\u00fcmlerinin mevcut oldu\u011funu bilir.<br \/>\n*   <code>sudo apt upgrade -y<\/code>: Bu komut, <code>update<\/code> komutuyla g\u00fcncellenen paket listesine g\u00f6re mevcut t\u00fcm kurulu paketlerinizi en yeni s\u00fcr\u00fcmlerine y\u00fckseltir. <code>-y<\/code> bayra\u011f\u0131, t\u00fcm sorulara otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 vererek y\u00fckseltme i\u015flemini etkile\u015fimli olmadan tamamlaman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Bu i\u015flemlerin tamamlanmas\u0131 biraz zaman alabilir. \u0130\u015flem bittikten sonra, sisteminiz Django kurulumu i\u00e7in haz\u0131r hale gelmi\u015f olacakt\u0131r.<\/p>\n<h3>Python ve Pip Kurulumu<\/h3>\n<p>Django bir Python web \u00e7er\u00e7evesi oldu\u011fu i\u00e7in, sistemimizde Python&#8217;\u0131n ve Python paket y\u00f6neticisi olan Pip&#8217;in kurulu olmas\u0131 \u015fartt\u0131r. Ubuntu 22.04, \u00e7o\u011fu Linux da\u011f\u0131t\u0131m\u0131nda oldu\u011fu gibi, varsay\u0131lan olarak Python 3 ile birlikte gelir. Ancak, Pip ve sanal ortamlar i\u00e7in gerekli ek ara\u00e7lar\u0131n kurulu oldu\u011fundan emin olmal\u0131y\u0131z.<\/p>\n<h4>Python S\u00fcr\u00fcm\u00fcn\u00fc Kontrol Etme<\/h4>\n<p>Terminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rarak Python 3 s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">python3 --version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 genellikle <code>Python 3.10.x<\/code> gibi bir \u015fey olacakt\u0131r. Django, Python&#8217;\u0131n en son s\u00fcr\u00fcmleriyle uyumlu olacak \u015fekilde s\u00fcrekli g\u00fcncellenir. Ubuntu 22.04 ile gelen Python 3.10 s\u00fcr\u00fcm\u00fc, \u00e7o\u011fu Django projesi i\u00e7in fazlas\u0131yla yeterlidir.<\/p>\n<h4>Pip ve Sanal Ortam Ara\u00e7lar\u0131n\u0131 Kurma<\/h4>\n<p>Pip (Python Package Index), Python paketlerini y\u00fcklemek ve y\u00f6netmek i\u00e7in kullan\u0131lan standart bir ara\u00e7t\u0131r. Ayr\u0131ca, projeler aras\u0131 ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlemek i\u00e7in sanal ortamlar olu\u015fturmam\u0131z\u0131 sa\u011flayan <code>python3-venv<\/code> paketini de kurmam\u0131z gerekiyor.<\/p>\n<pre><code class=\"language-bash\">sudo apt install python3-pip python3-venv -y<\/code><\/pre>\n<p>*   <code>python3-pip<\/code>: Bu paket, Python 3 i\u00e7in Pip&#8217;i kurar. Bu sayede Django gibi \u00fc\u00e7\u00fcnc\u00fc taraf Python k\u00fct\u00fcphanelerini kolayca y\u00fckleyebiliriz.<br \/>\n*   <code>python3-venv<\/code>: Bu paket, Python&#8217;\u0131n sanal ortamlar olu\u015fturma yetene\u011fini sa\u011flar. Sanal ortamlar, farkl\u0131 projeler i\u00e7in ba\u011f\u0131ms\u0131z Python ortamlar\u0131 olu\u015fturarak ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler.<\/p>\n<p>Kurulum tamamland\u0131ktan sonra, Pip&#8217;in do\u011fru \u015fekilde kuruldu\u011funu do\u011frulamak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">pip3 --version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, Pip&#8217;in kurulu s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6sterecektir. Art\u0131k Python ve Pip ba\u015far\u0131yla sisteminize kurulmu\u015f durumda.<\/p>\n<h3>Sanal Ortam Kurulumu<\/h3>\n<p>Sanal ortamlar (virtual environments), Python projeleri geli\u015ftirirken vazge\u00e7ilmez bir ara\u00e7t\u0131r. Her projenin kendi ba\u011f\u0131ml\u0131l\u0131klar\u0131na sahip olmas\u0131n\u0131 sa\u011flayarak, farkl\u0131 projelerdeki paket s\u00fcr\u00fcmlerinin \u00e7ak\u0131\u015fmas\u0131n\u0131 engeller. \u00d6rne\u011fin, bir projeniz Django 3 kullan\u0131rken, ba\u015fka bir projeniz Django 4 kullanabilir. Sanal ortamlar sayesinde bu iki proje, sisteminize kurulu genel Python paketlerini etkilemeden ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015fabilir.<\/p>\n<h4>Neden Sanal Ortam Kullanmal\u0131y\u0131z?<\/h4>\n<p>*   <strong>Ba\u011f\u0131ml\u0131l\u0131k \u0130zolasyonu:<\/strong> Her proje kendi ba\u011f\u0131ml\u0131l\u0131klar\u0131na sahip olur, bu da global Python ortam\u0131n\u0131 temiz tutar.<br \/>\n*   <strong>Versiyon \u00c7ak\u0131\u015fmalar\u0131n\u0131 \u00d6nleme:<\/strong> Farkl\u0131 projelerin farkl\u0131 paket versiyonlar\u0131na ihtiya\u00e7 duymas\u0131 durumunda sorun ya\u015fanmaz.<br \/>\n*   <strong>Temiz ve Ta\u015f\u0131nabilir Ortam:<\/strong> Projenizi ba\u015fka bir geli\u015ftiriciye veya sunucuya ta\u015f\u0131rken, yaln\u0131zca <code>requirements.txt<\/code> dosyas\u0131n\u0131 payla\u015farak t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 kolayca kurmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h4>Proje Dizini Olu\u015fturma<\/h4>\n<p>\u00d6ncelikle, Django projeniz i\u00e7in bir ana dizin olu\u015ftural\u0131m ve bu dizine ge\u00e7elim. Bu dizin, t\u00fcm projenizin ve sanal ortam\u0131n\u0131z\u0131n ana kapsay\u0131c\u0131s\u0131 olacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">mkdir my_django_project\ncd my_django_project<\/code><\/pre>\n<p>Burada <code>my_django_project<\/code> yerine projenizin ad\u0131n\u0131 yans\u0131tan daha anlaml\u0131 bir isim kullanabilirsiniz.<\/p>\n<h4>Sanal Ortam Olu\u015fturma<\/h4>\n<p>\u015eimdi, olu\u015fturdu\u011fumuz proje dizininin i\u00e7inde bir sanal ortam olu\u015ftural\u0131m. Genellikle sanal ortam dizinine <code>venv<\/code> veya <code>env<\/code> gibi isimler verilir.<\/p>\n<pre><code class=\"language-bash\">python3 -m venv venv<\/code><\/pre>\n<p>*   <code>python3 -m venv<\/code>: Bu komut, Python&#8217;\u0131n <code>venv<\/code> mod\u00fcl\u00fcn\u00fc kullanarak bir sanal ortam olu\u015fturur.<br \/>\n*   <code>venv<\/code>: Bu, sanal ortam\u0131n olu\u015fturulaca\u011f\u0131 dizinin ad\u0131d\u0131r.<\/p>\n<p>Bu komut, <code>my_django_project<\/code> dizininin i\u00e7inde <code>venv<\/code> ad\u0131nda yeni bir dizin olu\u015fturacakt\u0131r. Bu dizin, Python yorumlay\u0131c\u0131s\u0131n\u0131n bir kopyas\u0131n\u0131 ve Pip&#8217;i i\u00e7erir.<\/p>\n<h4>Sanal Ortam\u0131 Etkinle\u015ftirme<\/h4>\n<p>Sanal ortam\u0131 olu\u015fturduktan sonra, onu etkinle\u015ftirmeniz gerekir. Etkinle\u015ftirildi\u011finde, terminalinizde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz prompt (komut istemi) de\u011fi\u015fecek ve sanal ortam\u0131n ad\u0131n\u0131 g\u00f6sterecektir (\u00f6rne\u011fin, <code>(venv)<\/code>).<\/p>\n<pre><code class=\"language-bash\">source venv\/bin\/activate<\/code><\/pre>\n<p>Sanal ortam\u0131n\u0131z etkinle\u015ftirildi\u011finde, terminaliniz a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcnecektir:<\/p>\n<pre><code class=\"language-bash\">(venv) user@hostname:~\/my_django_project$<\/code><\/pre>\n<p>Bu, art\u0131k sanal ortam\u0131n\u0131z\u0131n aktif oldu\u011funu ve kuraca\u011f\u0131n\u0131z t\u00fcm Python paketlerinin (Django dahil) bu sanal ortama y\u00fcklenece\u011fini g\u00f6sterir.<\/p>\n<h4>Sanal Ortam\u0131 Devre D\u0131\u015f\u0131 B\u0131rakma<\/h4>\n<p>Geli\u015ftirme i\u015finiz bitti\u011finde veya ba\u015fka bir projeye ge\u00e7mek istedi\u011finizde sanal ortam\u0131 devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">deactivate<\/code><\/pre>\n<p>Bu komut, sanal ortam\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131r ve terminal prompt&#8217;unuz normal haline d\u00f6ner. Yeni bir oturum ba\u015flatt\u0131\u011f\u0131n\u0131zda veya terminali kapat\u0131p tekrar a\u00e7t\u0131\u011f\u0131n\u0131zda sanal ortam otomatik olarak devre d\u0131\u015f\u0131 kal\u0131r ve onu tekrar etkinle\u015ftirmeniz gerekir.<\/p>\n<h3>Django Kurulumu<\/h3>\n<p>Sanal ortam\u0131m\u0131z\u0131 ba\u015far\u0131yla kurup etkinle\u015ftirdi\u011fimize g\u00f6re, \u015fimdi Django&#8217;yu bu sanal ortam\u0131n i\u00e7ine kurabiliriz.<\/p>\n<h4>Django Paketini Y\u00fckleme<\/h4>\n<p>Sanal ortam\u0131n\u0131z\u0131n etkin oldu\u011fundan emin olun (prompt&#8217;ta <code>(venv)<\/code> g\u00f6rd\u00fc\u011f\u00fcn\u00fczden). Ard\u0131ndan, a\u015fa\u011f\u0131daki komutu kullanarak Django&#8217;yu Pip arac\u0131l\u0131\u011f\u0131yla y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">(venv) pip install Django<\/code><\/pre>\n<p>Bu komut, Django&#8217;nun en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirip sanal ortam\u0131n\u0131za kuracakt\u0131r. Kurulum i\u015flemi, internet h\u0131z\u0131n\u0131za ba\u011fl\u0131 olarak birka\u00e7 saniye s\u00fcrebilir.<\/p>\n<h4>Django Kurulumunu Do\u011frulama<\/h4>\n<p>Django&#8217;nun ba\u015far\u0131l\u0131 bir \u015fekilde kuruldu\u011funu do\u011frulamak i\u00e7in, <code>django-admin<\/code> komutunun s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">(venv) django-admin --version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, kurulu Django s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6sterecektir (\u00f6rne\u011fin, <code>4.2.7<\/code>). Bu, Django&#8217;nun sanal ortam\u0131n\u0131zda d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 teyit eder.<\/p>\n<h3>\u0130lk Django Projenizi Olu\u015fturma<\/h3>\n<p>Django ba\u015far\u0131yla kurulduktan sonra, ilk projenizi olu\u015fturmaya haz\u0131rs\u0131n\u0131z. Django projeleri, bir veya daha fazla &#8220;uygulama&#8221; (app) i\u00e7erebilen bir web sitesi veya web hizmeti i\u00e7in bir yap\u0131land\u0131rma ve ayar koleksiyonudur.<\/p>\n<h4>Django Projesi Olu\u015fturma Komutu<\/h4>\n<p><code>my_django_project<\/code> dizininizde (ve sanal ortam\u0131n\u0131z etkin durumdayken) a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">(venv) django-admin startproject mysite .<\/code><\/pre>\n<p>*   <code>django-admin startproject mysite<\/code>: Bu komut, <code>mysite<\/code> ad\u0131nda yeni bir Django projesi olu\u015fturur. <code>mysite<\/code>, projenizin ana yap\u0131land\u0131rma dizini olacakt\u0131r.<br \/>\n*   <code>.<\/code> (nokta): Bu, Django&#8217;ya projenin mevcut dizinde (yani <code>my_django_project<\/code> i\u00e7inde) olu\u015fturulmas\u0131n\u0131 s\u00f6yler. E\u011fer bu noktay\u0131 kullanmazsan\u0131z, Django <code>my_django_project<\/code> i\u00e7inde <code>mysite<\/code> ad\u0131nda ba\u015fka bir dizin olu\u015fturur ve projeniz <code>my_django_project\/mysite\/mysite<\/code> gibi i\u00e7 i\u00e7e ge\u00e7mi\u015f bir yap\u0131ya sahip olur. Tek bir ana dizin alt\u0131nda \u00e7al\u0131\u015fmak genellikle daha pratiktir.<\/p>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, <code>my_django_project<\/code> dizininizin yap\u0131s\u0131 a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcnecektir:<\/p>\n<pre><code class=\"language-\">my_django_project\/\n\u251c\u2500\u2500 venv\/\n\u251c\u2500\u2500 manage.py\n\u2514\u2500\u2500 mysite\/\n    \u251c\u2500\u2500 __init__.py\n    \u251c\u2500\u2500 asgi.py\n    \u251c\u2500\u2500 settings.py\n    \u251c\u2500\u2500 urls.py\n    \u2514\u2500\u2500 wsgi.py<\/code><\/pre>\n<h4>Proje Dosyalar\u0131n\u0131 Anlama<\/h4>\n<p>*   <code>manage.py<\/code>: Bu, Django projenizle etkile\u015fim kurmak i\u00e7in kullan\u0131lan bir komut sat\u0131r\u0131 yard\u0131mc\u0131 program\u0131d\u0131r. Veritaban\u0131 ge\u00e7i\u015fleri yapmak, geli\u015ftirme sunucusunu \u00e7al\u0131\u015ft\u0131rmak, yeni uygulamalar olu\u015fturmak ve daha fazlas\u0131 i\u00e7in bu dosyay\u0131 kullanacaks\u0131n\u0131z.<br \/>\n*   <code>mysite\/<\/code> (i\u00e7teki dizin): Bu, projenizin ana Python paketidir. Ad\u0131, <code>startproject<\/code> komutuyla verdi\u011finiz isimdir. \u0130\u00e7indeki dosyalar \u015funlard\u0131r:<br \/>\n    *   <code>__init__.py<\/code>: Bu dosya, <code>mysite<\/code> dizininin bir Python paketi oldu\u011funu belirtir.<br \/>\n    *   <code>settings.py<\/code>: Projenizin t\u00fcm ayarlar\u0131n\u0131 (veritaban\u0131 yap\u0131land\u0131rmas\u0131, y\u00fckl\u00fc uygulamalar, statik dosyalar vb.) i\u00e7erir.<br \/>\n    *   <code>urls.py<\/code>: Projenizin ana URL bildirimlerini i\u00e7erir. Gelen isteklerin hangi g\u00f6r\u00fcn\u00fcmlere y\u00f6nlendirilece\u011fini burada tan\u0131mlars\u0131n\u0131z.<br \/>\n    *   <code>wsgi.py<\/code>: WSGI (Web Server Gateway Interface) uyumlu web sunucular\u0131n\u0131n projenizi sunmas\u0131na yard\u0131mc\u0131 olan bir giri\u015f noktas\u0131d\u0131r.<br \/>\n    *   <code>asgi.py<\/code>: ASGI (Asynchronous Server Gateway Interface) uyumlu web sunucular\u0131n\u0131n asenkron (ger\u00e7ek zamanl\u0131) \u00f6zelliklere sahip projenizi sunmas\u0131na yard\u0131mc\u0131 olan bir giri\u015f noktas\u0131d\u0131r.<\/p>\n<h3>Veritaban\u0131 Ge\u00e7i\u015fleri ve S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h3>\n<p>Her yeni Django projesi, kullan\u0131c\u0131 kimlik do\u011frulama, y\u00f6netici paneli ve oturum y\u00f6netimi gibi baz\u0131 yerle\u015fik uygulamalarla birlikte gelir. Bu uygulamalar\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in veritaban\u0131nda gerekli tablolar\u0131n olu\u015fturulmas\u0131 gerekir. Django, bu tablolar\u0131 olu\u015fturmak i\u00e7in &#8220;ge\u00e7i\u015fler&#8221; (migrations) ad\u0131 verilen bir sistem kullan\u0131r.<\/p>\n<h4>Veritaban\u0131 Ge\u00e7i\u015flerini Uygulama<\/h4>\n<p>Projenizin k\u00f6k dizininde (yani <code>manage.py<\/code> dosyas\u0131n\u0131n bulundu\u011fu yerde) a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">(venv) python manage.py migrate<\/code><\/pre>\n<p>*   <code>python manage.py migrate<\/code>: Bu komut, <code>settings.py<\/code> dosyas\u0131nda tan\u0131mlanan veritaban\u0131nda (varsay\u0131lan olarak SQLite) Django&#8217;nun yerle\u015fik uygulamalar\u0131 i\u00e7in gerekli tablolar\u0131 olu\u015fturur. Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, bir\u00e7ok <code>Applying ...<\/code> mesaj\u0131 g\u00f6receksiniz. Bu, Django&#8217;nun farkl\u0131 uygulamalar i\u00e7in ge\u00e7i\u015fleri uygulad\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h4>\n<p>Django&#8217;nun en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri de otomatik olarak olu\u015fturulan y\u00f6netici paneli (Django Admin) dir. Bu paneli kullanabilmek i\u00e7in bir y\u00f6netici kullan\u0131c\u0131 (superuser) olu\u015fturman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\">(venv) python manage.py createsuperuser<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, sizden s\u0131ras\u0131yla bir kullan\u0131c\u0131 ad\u0131, e-posta adresi (iste\u011fe ba\u011fl\u0131) ve iki kez parola girmeniz istenecektir. G\u00fc\u00e7l\u00fc bir parola se\u00e7ti\u011finizden emin olun.<\/p>\n<pre><code class=\"language-\">Username (leave blank to use 'user'): admin\nEmail address: admin@example.com\nPassword:\nPassword (again):\nSuperuser created successfully.<\/code><\/pre>\n<p>Bu s\u00fcper kullan\u0131c\u0131, Django y\u00f6netici paneline giri\u015f yapmak ve veritaban\u0131ndaki modellerinizi y\u00f6netmek i\u00e7in kullan\u0131lacakt\u0131r.<\/p>\n<h3>Geli\u015ftirme Sunucusunu \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Django, geli\u015ftirme s\u0131ras\u0131nda projenizi test etmek i\u00e7in hafif bir web sunucusuyla birlikte gelir. Bu sunucu, \u00fcretim ortam\u0131 i\u00e7in tasarlanmam\u0131\u015ft\u0131r ancak yerel geli\u015ftirme i\u00e7in m\u00fckemmeldir.<\/p>\n<h4>Geli\u015ftirme Sunucusunu Ba\u015flatma<\/h4>\n<p>Projenizin k\u00f6k dizininde (yani <code>manage.py<\/code> dosyas\u0131n\u0131n bulundu\u011fu yerde) a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">(venv) python manage.py runserver<\/code><\/pre>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, terminalde a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 g\u00f6receksiniz:<\/p>\n<pre><code class=\"language-\">Watching for file changes with StatReloader\nPerforming system checks...\n\nSystem check identified no issues (0 silenced).\n\nYou have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.\nRun 'python manage.py migrate' to apply them.\nNovember 24, 2023 - 14:30:00\nDjango version 4.2.7, using settings 'mysite.settings'\nStarting development server at http:\/\/127.0.0.1:8000\/\nQuit the server with CONTROL-C.<\/code><\/pre>\n<p>Yukar\u0131daki &#8220;You have 18 unapplied migration(s)&#8221; uyar\u0131s\u0131n\u0131 g\u00f6rmezden gelebilirsiniz, \u00e7\u00fcnk\u00fc <code>migrate<\/code> komutunu zaten \u00e7al\u0131\u015ft\u0131rm\u0131\u015ft\u0131k. Bu uyar\u0131 genellikle yeni bir proje olu\u015fturuldu\u011funda veya yeni bir uygulama eklendi\u011finde ortaya \u00e7\u0131kar.<\/p>\n<h4>Web Taray\u0131c\u0131n\u0131zda G\u00f6r\u00fcnt\u00fcleme<\/h4>\n<p>\u015eimdi bir web taray\u0131c\u0131s\u0131 a\u00e7\u0131n ve adres \u00e7ubu\u011funa <code>http:\/\/127.0.0.1:8000\/<\/code> yaz\u0131n. Kar\u015f\u0131n\u0131za &#8220;The install worked successfully! Congratulations!&#8221; yazan bir Django ho\u015f geldiniz sayfas\u0131 gelmelidir. Bu sayfa, Django projenizin ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>Django Y\u00f6netici Paneline Eri\u015fim<\/h4>\n<p>Y\u00f6netici paneline eri\u015fmek i\u00e7in taray\u0131c\u0131n\u0131zda <code>http:\/\/127.0.0.1:8000\/admin\/<\/code> adresine gidin. Olu\u015fturdu\u011funuz s\u00fcper kullan\u0131c\u0131 (admin kullan\u0131c\u0131 ad\u0131 ve parolas\u0131) ile giri\u015f yapabilirsiniz. Giri\u015f yapt\u0131ktan sonra, kullan\u0131c\u0131lar, gruplar ve di\u011fer yerle\u015fik modelleri y\u00f6netebilece\u011finiz Django y\u00f6netici panelini g\u00f6receksiniz.<\/p>\n<p>Geli\u015ftirme sunucusunu durdurmak i\u00e7in terminalde Ctrl+C tu\u015f kombinasyonuna basman\u0131z yeterlidir.<\/p>\n<h3>\u0130lk Django Uygulaman\u0131z\u0131 Olu\u015fturma<\/h3>\n<p>Django&#8217;da projeler, bir veya daha fazla &#8220;uygulama&#8221;dan olu\u015fur. Uygulamalar, bir projenin belirli bir i\u015flevini yerine getiren mod\u00fcler bile\u015fenlerdir. \u00d6rne\u011fin, bir blog projesinde <code>blog<\/code> uygulamas\u0131, <code>comments<\/code> uygulamas\u0131 veya <code>users<\/code> uygulamas\u0131 olabilir. Uygulamalar, ba\u011f\u0131ms\u0131z ve yeniden kullan\u0131labilir olacak \u015fekilde tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h4>Uygulama Olu\u015fturma Komutu<\/h4>\n<p>Projenizin k\u00f6k dizininde (yani <code>manage.py<\/code> dosyas\u0131n\u0131n bulundu\u011fu yerde ve sanal ortam\u0131n\u0131z etkin durumdayken) a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">(venv) python manage.py startapp myapp<\/code><\/pre>\n<p>*   <code>python manage.py startapp myapp<\/code>: Bu komut, <code>myapp<\/code> ad\u0131nda yeni bir Django uygulamas\u0131 olu\u015fturur.<\/p>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, <code>my_django_project<\/code> dizininizin yap\u0131s\u0131 a\u015fa\u011f\u0131daki gibi g\u00fcncellenecektir:<\/p>\n<pre><code class=\"language-\">my_django_project\/\n\u251c\u2500\u2500 venv\/\n\u251c\u2500\u2500 manage.py\n\u251c\u2500\u2500 mysite\/\n\u2502   \u251c\u2500\u2500 ...\n\u2514\u2500\u2500 myapp\/\n    \u251c\u2500\u2500 __init__.py\n    \u251c\u2500\u2500 admin.py\n    \u251c\u2500\u2500 apps.py\n    \u251c\u2500\u2500 migrations\/\n    \u2502   \u2514\u2500\u2500 __init__.py\n    \u251c\u2500\u2500 models.py\n    \u251c\u2500\u2500 tests.py\n    \u2514\u2500\u2500 views.py<\/code><\/pre>\n<h4>Uygulama Dosyalar\u0131n\u0131 Anlama<\/h4>\n<p>*   <code>myapp\/<\/code>: Uygulaman\u0131z\u0131n ana dizini.<br \/>\n*   <code>admin.py<\/code>: Django y\u00f6netici paneli i\u00e7in model kay\u0131tlar\u0131n\u0131 tan\u0131mlad\u0131\u011f\u0131n\u0131z yer.<br \/>\n*   <code>apps.py<\/code>: Uygulama yap\u0131land\u0131rmas\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>models.py<\/code>: Veritaban\u0131 modellerinizi (veri yap\u0131lar\u0131n\u0131z\u0131) tan\u0131mlad\u0131\u011f\u0131n\u0131z yer.<br \/>\n*   <code>views.py<\/code>: Uygulaman\u0131z\u0131n mant\u0131\u011f\u0131n\u0131 ve gelen HTTP isteklerine nas\u0131l yan\u0131t verece\u011fini tan\u0131mlad\u0131\u011f\u0131n\u0131z yer.<br \/>\n*   <code>migrations\/<\/code>: Uygulaman\u0131z\u0131n veritaban\u0131 \u015fema de\u011fi\u015fikliklerini izleyen dosyalar\u0131 i\u00e7erir.<br \/>\n*   <code>tests.py<\/code>: Uygulaman\u0131z i\u00e7in otomatik testler yazd\u0131\u011f\u0131n\u0131z yer.<\/p>\n<h4>Uygulamay\u0131 Projeye Kaydetme<\/h4>\n<p>Olu\u015fturdu\u011funuz yeni uygulamay\u0131 Django projenizin tan\u0131mas\u0131 i\u00e7in <code>mysite\/settings.py<\/code> dosyas\u0131nda <code>INSTALLED_APPS<\/code> listesine eklemeniz gerekir.<\/p>\n<p><code>mysite\/settings.py<\/code> dosyas\u0131n\u0131 bir metin d\u00fczenleyiciyle a\u00e7\u0131n ve <code>INSTALLED_APPS<\/code> b\u00f6l\u00fcm\u00fcn\u00fc bulun. <code>myapp<\/code> uygulamas\u0131n\u0131 bu listeye ekleyin:<\/p>\n<pre><code class=\"language-python\"># mysite\/settings.py\n\nINSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'myapp',  # Yeni uygulaman\u0131z\u0131 buraya ekleyin\n]<\/code><\/pre>\n<p>Bu ad\u0131m\u0131 tamamlad\u0131ktan sonra, projeniz art\u0131k <code>myapp<\/code> uygulamas\u0131ndan haberdar olacakt\u0131r.<\/p>\n<h3>Temel Bir G\u00f6r\u00fcn\u00fcm (View) ve URL Olu\u015fturma<\/h3>\n<p>\u015eimdi, <code>myapp<\/code> i\u00e7inde basit bir g\u00f6r\u00fcn\u00fcm (view) olu\u015ftural\u0131m ve bu g\u00f6r\u00fcn\u00fcm\u00fc bir URL ile e\u015fle\u015ftirelim.<\/p>\n<h4>G\u00f6r\u00fcn\u00fcm Olu\u015fturma<\/h4>\n<p><code>myapp\/views.py<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-python\"># myapp\/views.py\n\nfrom django.http import HttpResponse\n\ndef index(request):\n    return HttpResponse(\"Merhaba, bu benim ilk Django uygulamam!\")<\/code><\/pre>\n<p>*   <code>from django.http import HttpResponse<\/code>: <code>HttpResponse<\/code> s\u0131n\u0131f\u0131n\u0131 i\u00e7e aktar\u0131r\u0131z. Bu, taray\u0131c\u0131ya geri g\u00f6nderilecek metin veya HTML gibi bir yan\u0131t olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>def index(request):<\/code>: <code>index<\/code> ad\u0131nda bir fonksiyon tan\u0131mlar\u0131z. Django g\u00f6r\u00fcn\u00fcmleri her zaman ilk arg\u00fcman olarak bir <code>request<\/code> nesnesi al\u0131r.<br \/>\n*   <code>return HttpResponse(...)<\/code>: Bu fonksiyon, taray\u0131c\u0131ya &#8220;Merhaba, bu benim ilk Django uygulamam!&#8221; metnini i\u00e7eren basit bir HTTP yan\u0131t\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h4>Uygulama URL&#8217;lerini Tan\u0131mlama<\/h4>\n<p>Her uygulaman\u0131n kendi <code>urls.py<\/code> dosyas\u0131na sahip olmas\u0131 iyi bir uygulamad\u0131r. Bu, projenizin URL yap\u0131s\u0131n\u0131 mod\u00fcler hale getirir.<\/p>\n<p><code>myapp<\/code> dizininin i\u00e7inde <code>urls.py<\/code> ad\u0131nda yeni bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">touch myapp\/urls.py<\/code><\/pre>\n<p><code>myapp\/urls.py<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi ekleyin:<\/p>\n<pre><code class=\"language-python\"># myapp\/urls.py\n\nfrom django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('', views.index, name='index'),\n]<\/code><\/pre>\n<p>*   <code>from django.urls import path<\/code>: URL kal\u0131plar\u0131n\u0131 tan\u0131mlamak i\u00e7in <code>path<\/code> fonksiyonunu i\u00e7e aktar\u0131r\u0131z.<br \/>\n*   <code>from . import views<\/code>: Mevcut dizinden (<code>myapp<\/code> dizini) <code>views.py<\/code> dosyas\u0131n\u0131 i\u00e7e aktar\u0131r\u0131z.<br \/>\n*   <code>urlpatterns = [...]<\/code>: Bu liste, uygulaman\u0131z\u0131n URL kal\u0131plar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>path('', views.index, name='index')<\/code>: Bu sat\u0131r, bo\u015f bir yol (<code>''<\/code>) i\u00e7in (<code>http:\/\/127.0.0.1:8000\/myapp\/<\/code> gibi bir adresin sonu) <code>views.index<\/code> fonksiyonunu \u00e7a\u011f\u0131raca\u011f\u0131n\u0131 belirtir. <code>name='index'<\/code> ise bu URL&#8217;ye programatik olarak ba\u015fvurmak i\u00e7in bir isim atar.<\/p>\n<h4>Proje URL&#8217;lerine Uygulama URL&#8217;lerini Dahil Etme<\/h4>\n<p>Son olarak, projenizin ana <code>urls.py<\/code> dosyas\u0131na (<code>mysite\/urls.py<\/code>) <code>myapp<\/code> uygulamas\u0131n\u0131n URL&#8217;lerini dahil etmeniz gerekir.<\/p>\n<p><code>mysite\/urls.py<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-python\"># mysite\/urls.py\n\nfrom django.contrib import admin\nfrom django.urls import path, include # 'include' fonksiyonunu i\u00e7e aktar\u0131yoruz\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('myapp\/', include('myapp.urls')), # myapp URL'lerini dahil ediyoruz\n]<\/code><\/pre>\n<p>*   <code>from django.urls import path, include<\/code>: <code>include<\/code> fonksiyonunu i\u00e7e aktar\u0131r\u0131z. Bu, ba\u015fka bir <code>urls.py<\/code> dosyas\u0131ndaki URL kal\u0131plar\u0131n\u0131 projenizin ana URL&#8217;lerine ba\u011flamam\u0131z\u0131 sa\u011flar.<br \/>\n*   <code>path('myapp\/', include('myapp.urls'))<\/code>: Bu sat\u0131r, <code>http:\/\/127.0.0.1:8000\/myapp\/<\/code> ile ba\u015flayan t\u00fcm URL&#8217;lerin <code>myapp<\/code> uygulamas\u0131n\u0131n <code>urls.py<\/code> dosyas\u0131nda aranaca\u011f\u0131n\u0131 belirtir.<\/p>\n<h4>Test Etme<\/h4>\n<p>Geli\u015ftirme sunucusunu tekrar ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">(venv) python manage.py runserver<\/code><\/pre>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zda <code>http:\/\/127.0.0.1:8000\/myapp\/<\/code> adresine gidin. &#8220;Merhaba, bu benim ilk Django uygulamam!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz. Tebrikler! \u0130lk Django uygulaman\u0131z\u0131 ba\u015far\u0131yla olu\u015fturdunuz ve bir URL ile e\u015fle\u015ftirdiniz.<\/p>\n<h3>Sonraki Ad\u0131mlar ve Geli\u015ftirme \u0130pu\u00e7lar\u0131<\/h3>\n<p>Django geli\u015ftirme ortam\u0131n\u0131z\u0131 ba\u015far\u0131yla kurdunuz ve ilk uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131n\u0131z. Bu, Django ile web geli\u015ftirme yolculu\u011funuzun sadece ba\u015flang\u0131c\u0131d\u0131r. \u0130\u015fte sonraki ad\u0131mlar ve daha verimli bir geli\u015ftirme s\u00fcreci i\u00e7in baz\u0131 ipu\u00e7lar\u0131:<\/p>\n<h4>Modeller ve Veritaban\u0131<\/h4>\n<p>*   <strong>Modelleri Tan\u0131mlama:<\/strong> <code>myapp\/models.py<\/code> dosyas\u0131nda veritaban\u0131 modellerinizi tan\u0131mlayarak verilerinizi yap\u0131land\u0131r\u0131n. Django&#8217;nun ORM&#8217;si (Object-Relational Mapper) sayesinde SQL yazmadan veritaban\u0131 i\u015flemleri yapabilirsiniz.<br \/>\n*   <strong>Ge\u00e7i\u015fleri Olu\u015fturma ve Uygulama:<\/strong> Modellerinizde de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda <code>python manage.py makemigrations<\/code> ile ge\u00e7i\u015f dosyalar\u0131 olu\u015fturun ve <code>python manage.py migrate<\/code> ile veritaban\u0131na uygulay\u0131n.<\/p>\n<h4>\u015eablonlar (Templates)<\/h4>\n<p>*   <strong>HTML Dosyalar\u0131 Olu\u015fturma:<\/strong> <code>myapp\/templates\/myapp\/<\/code> dizini alt\u0131nda HTML \u015fablonlar\u0131 olu\u015fturarak dinamik web sayfalar\u0131 tasarlay\u0131n.<br \/>\n*   <strong>G\u00f6r\u00fcn\u00fcmlerden \u015eablonlar\u0131 Render Etme:<\/strong> <code>django.shortcuts.render<\/code> fonksiyonunu kullanarak g\u00f6r\u00fcn\u00fcmlerinizden \u015fablonlar\u0131 i\u015fleyin ve ba\u011flam verilerini (context data) \u015fablonlara aktar\u0131n.<\/p>\n<h4>Statik Dosyalar<\/h4>\n<p>*   <strong>CSS, JavaScript ve Resimler:<\/strong> CSS stilleri, JavaScript dosyalar\u0131 ve resimler gibi statik varl\u0131klar\u0131 <code>myapp\/static\/myapp\/<\/code> dizininde y\u00f6netin.<br \/>\n*   <strong><code>STATIC_URL<\/code> ve <code>collectstatic<\/code>:<\/strong> <code>settings.py<\/code> dosyas\u0131ndaki <code>STATIC_URL<\/code> ayar\u0131n\u0131 ve \u00fcretim ortam\u0131nda <code>python manage.py collectstatic<\/code> komutunu kullanarak statik dosyalar\u0131n\u0131z\u0131 toplay\u0131n.<\/p>\n<h4>Django Y\u00f6netici Paneli<\/h4>\n<p>*   <strong>Modelleri Kaydetme:<\/strong> Uygulaman\u0131zdaki modelleri <code>myapp\/admin.py<\/code> dosyas\u0131nda kaydederek y\u00f6netici panelinden kolayca y\u00f6netilebilir hale getirin.<\/p>\n<h4>S\u00fcr\u00fcm Kontrol Sistemi (Git)<\/h4>\n<p>*   <strong>Git Kullan\u0131m\u0131:<\/strong> Projenizi bir s\u00fcr\u00fcm kontrol sistemi olan Git ile y\u00f6netmek, kod de\u011fi\u015fikliklerini takip etmek, farkl\u0131 \u00f6zellikler \u00fczerinde \u00e7al\u0131\u015fmak ve ekip \u00e7al\u0131\u015fmas\u0131n\u0131 kolayla\u015ft\u0131rmak i\u00e7in hayati \u00f6neme sahiptir. Projenizi bir Git deposuna (<code>git init<\/code>, <code>git add .<\/code>, <code>git commit<\/code>) eklemeyi d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<h4>\u0130yi Uygulamalar<\/h4>\n<p>*   <strong><code>requirements.txt<\/code>:<\/strong> Sanal ortam\u0131n\u0131za kurdu\u011funuz t\u00fcm paketleri <code>pip freeze > requirements.txt<\/code> komutuyla bir dosyaya kaydedin. Bu, projenizi ba\u015fka bir ortama ta\u015f\u0131rken veya ba\u015fka bir geli\u015ftiriciyle payla\u015f\u0131rken ba\u011f\u0131ml\u0131l\u0131klar\u0131 kolayca kurmas\u0131n\u0131 sa\u011flar (<code>pip install -r requirements.txt<\/code>).<br \/>\n*   <strong>Ayarlar\u0131n Ayr\u0131\u015ft\u0131r\u0131lmas\u0131:<\/strong> Geli\u015ftirme ve \u00fcretim ortamlar\u0131 i\u00e7in farkl\u0131 <code>settings.py<\/code> dosyalar\u0131 (veya ayarlar\u0131 ayr\u0131\u015ft\u0131rma y\u00f6ntemleri) kullanmak, g\u00fcvenli\u011fi ve esnekli\u011fi art\u0131r\u0131r.<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> Django&#8217;nun yerle\u015fik g\u00fcvenlik \u00f6zelliklerini (CSRF korumas\u0131, XSS korumas\u0131 vb.) anlay\u0131n ve uygulaman\u0131z\u0131 g\u00fcvenli hale getirmek i\u00e7in en iyi uygulamalar\u0131 takip edin.<\/p>\n<h4>Daha Fazla \u00d6\u011frenme Kaynaklar\u0131<\/h4>\n<p>*   <strong>Django Dok\u00fcmantasyonu:<\/strong> Django&#8217;nun resmi dok\u00fcmantasyonu (docs.djangoproject.com), her seviyeden geli\u015ftirici i\u00e7in en kapsaml\u0131 ve g\u00fcncel kaynakt\u0131r.<br \/>\n*   <strong>Django Girls Tutorial:<\/strong> Yeni ba\u015flayanlar i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r (tutorial.djangogirls.org).<br \/>\n*   <strong>\u00c7evrimi\u00e7i Kurslar ve E\u011fitimler:<\/strong> Udemy, Coursera, FreeCodeCamp gibi platformlarda bir\u00e7ok Django kursu bulunmaktad\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, Ubuntu 22.04 i\u015fletim sistemi \u00fczerinde Django geli\u015ftirme ortam\u0131n\u0131 kurma ve ilk projenizi \u00e7al\u0131\u015ft\u0131rma s\u00fcrecini ad\u0131m ad\u0131m ele ald\u0131k. Sistem g\u00fcncellemesinden Python ve Pip kurulumuna, sanal ortam\u0131n olu\u015fturulmas\u0131ndan Django&#8217;nun y\u00fcklenmesine, ilk projenin ve uygulaman\u0131n olu\u015fturulmas\u0131ndan temel bir g\u00f6r\u00fcn\u00fcm ve URL yap\u0131s\u0131n\u0131n kurulmas\u0131na kadar her a\u015famay\u0131 detayland\u0131rd\u0131k.<\/p>\n<p>Art\u0131k Django&#8217;nun g\u00fcc\u00fcn\u00fc kullanarak kendi web uygulamalar\u0131n\u0131z\u0131 geli\u015ftirmeye haz\u0131rs\u0131n\u0131z. Unutmay\u0131n ki web geli\u015ftirme, s\u00fcrekli \u00f6\u011frenmeyi ve pratik yapmay\u0131 gerektiren bir aland\u0131r. Django&#8217;nun sundu\u011fu geni\u015f \u00f6zellik yelpazesini ke\u015ffetmeye devam edin, modeller, \u015fablonlar, formlar, kullan\u0131c\u0131 kimlik do\u011frulamas\u0131 ve daha fazlas\u0131 hakk\u0131nda bilgi edinin.<\/p>\n<p>Bu rehber, Django yolculu\u011funuz i\u00e7in sa\u011flam bir temel olu\u015fturmu\u015ftur. Ba\u015far\u0131lar dileriz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi\nWeb geli\u015ftirme d\u00fcnyas\u0131nda h\u0131zla y\u00fckselen, g\u00fc\u00e7l\u00fc ve verimli bir \u00e7er\u00e7ev","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":[1468],"tags":[],"class_list":{"0":"post-36090","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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>Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi\" \/>\n<meta property=\"og:description\" content=\"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi Web geli\u015ftirme d\u00fcnyas\u0131nda h\u0131zla y\u00fckselen, g\u00fc\u00e7l\u00fc ve verimli bir \u00e7er\u00e7ev\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-07T23:40:44+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=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi\",\"datePublished\":\"2025-12-07T23:40:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\"},\"wordCount\":3347,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\",\"name\":\"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-07T23:40:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi\"}]},{\"@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":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi","og_description":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi Web geli\u015ftirme d\u00fcnyas\u0131nda h\u0131zla y\u00fckselen, g\u00fc\u00e7l\u00fc ve verimli bir \u00e7er\u00e7ev","og_url":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-07T23:40:44+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi","datePublished":"2025-12-07T23:40:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/"},"wordCount":3347,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/","name":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-07T23:40:44+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/django-kurulumu-ve-gelistirme-ortami-kurulumu-ubuntu-22-04-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Django Kurulumu ve Geli\u015ftirme Ortam\u0131 Kurulumu: Ubuntu 22.04 Rehberi"}]},{"@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\/36090","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=36090"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36090\/revisions"}],"predecessor-version":[{"id":36091,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36090\/revisions\/36091"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}