{"id":38656,"date":"2026-02-04T22:40:55","date_gmt":"2026-02-04T19:40:55","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38656"},"modified":"2026-02-04T22:40:55","modified_gmt":"2026-02-04T19:40:55","slug":"feincms-kurulumu-ve-baslangic-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/","title":{"rendered":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi<\/h2>\n<p>Django ekosistemi, web geli\u015ftiricilerine sundu\u011fu esneklik ve g\u00fc\u00e7l\u00fc yap\u0131s\u0131yla \u00f6ne \u00e7\u0131karken, i\u00e7erik y\u00f6netim sistemleri (CMS) konusunda da \u00e7e\u015fitli \u00e7\u00f6z\u00fcmler sunar. Bu \u00e7\u00f6z\u00fcmlerden biri olan FeinCMS, geli\u015ftiricilere y\u00fcksek d\u00fczeyde kontrol sa\u011flayan, mod\u00fcler ve esnek bir CMS \u00e7er\u00e7evesidir. Geleneksel &#8220;kutu d\u0131\u015f\u0131&#8221; CMS&#8217;lerin aksine, FeinCMS, Django projelerinize sorunsuz bir \u015fekilde entegre olabilen, i\u00e7erik modellerinizi ve \u015fablonlar\u0131n\u0131z\u0131 tamamen sizin kontrol\u00fcn\u00fczde tutman\u0131z\u0131 sa\u011flayan bir ara\u00e7 tak\u0131m\u0131 sunar. Bu kapsaml\u0131 rehberde, FeinCMS&#8217;i Django projenize nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, temel yap\u0131land\u0131rmalar\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 ve ilk sayfan\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, geli\u015ftiricilere FeinCMS&#8217;in g\u00fcc\u00fcn\u00fc ke\u015ffetmeleri ve projelerinde etkin bir \u015fekilde kullanmaya ba\u015flamalar\u0131 i\u00e7in sa\u011flam bir temel sunmakt\u0131r.<\/p>\n<p>FeinCMS, \u00f6zellikle karma\u015f\u0131k i\u00e7erik yap\u0131lar\u0131na sahip veya tamamen \u00f6zelle\u015ftirilmi\u015f bir y\u00f6netim paneli deneyimi arayan projeler i\u00e7in idealdir. &#8220;Par\u00e7al\u0131&#8221; (block-based) i\u00e7erik yakla\u015f\u0131m\u0131 sayesinde, farkl\u0131 i\u00e7erik t\u00fcrlerini (zengin metin, resim, video, \u00f6zel widget&#8217;lar) bir sayfada bir araya getirme ve s\u00fcr\u00fckle-b\u0131rak aray\u00fcz\u00fc ile kolayca y\u00f6netme imkan\u0131 sunar. Bu esneklik, hem geli\u015ftiricilerin hem de i\u00e7erik y\u00f6neticilerinin ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131layacak g\u00fc\u00e7l\u00fc bir ara\u00e7 olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>FeinCMS ile \u00e7al\u0131\u015fmaya ba\u015flamadan \u00f6nce, sisteminizde baz\u0131 temel bile\u015fenlerin kurulu oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. Bu \u00f6n gereksinimler, sorunsuz bir kurulum ve geli\u015ftirme s\u00fcreci i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>Python ve Django<\/h4>\n<p>FeinCMS bir Django uygulamas\u0131 oldu\u011fundan, \u00f6ncelikle sisteminizde Python&#8217;un kurulu olmas\u0131 gerekir. Python 3.8 veya \u00fczeri bir s\u00fcr\u00fcm \u00f6nerilir. Python&#8217;un kurulu olup olmad\u0131\u011f\u0131n\u0131 <code>python --version<\/code> komutu ile kontrol edebilirsiniz. Ard\u0131ndan, Django&#8217;nun kurulu olmas\u0131 gerekmektedir. FeinCMS, belirli Django s\u00fcr\u00fcmleriyle uyumludur; genellikle en son stabil Django s\u00fcr\u00fcmleriyle uyumluluk sa\u011flan\u0131r. Bu rehberde, Django&#8217;nun en son LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fcn\u00fc kullanman\u0131z\u0131 tavsiye ederiz.<\/p>\n<h4>Veritaban\u0131<\/h4>\n<p>Django projeleri i\u00e7in \u00e7e\u015fitli veritaban\u0131 se\u00e7enekleri mevcuttur. Geli\u015ftirme a\u015famas\u0131nda SQLite yeterli olsa da, \u00fcretim ortamlar\u0131 i\u00e7in PostgreSQL veya MySQL gibi daha g\u00fc\u00e7l\u00fc veritabanlar\u0131n\u0131 kullanman\u0131z \u00f6nerilir. FeinCMS&#8217;in a\u011fa\u00e7 yap\u0131lar\u0131 (MPTT) ile \u00e7al\u0131\u015fmas\u0131 nedeniyle, PostgreSQL genellikle tercih edilen bir se\u00e7enektir ve daha iyi performans sunabilir.<\/p>\n<h4>Sanal Ortam (Virtual Environment)<\/h4>\n<p>Herhangi bir Python projesinde oldu\u011fu gibi, FeinCMS ile \u00e7al\u0131\u015f\u0131rken de bir sanal ortam kullanmak en iyi pratiktir. Sanal ortamlar, projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 sistem genelindeki Python kurulumundan izole etmenizi sa\u011flar. Bu, farkl\u0131 projeler i\u00e7in farkl\u0131 ba\u011f\u0131ml\u0131l\u0131k versiyonlar\u0131na sahip olman\u0131za olanak tan\u0131r ve ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler.<\/p>\n<h3>Sanal Ortam Olu\u015fturma ve Projeyi Haz\u0131rlama<\/h3>\n<p>Sanal ortam olu\u015fturma ve temel Django projesini haz\u0131rlama ad\u0131mlar\u0131, FeinCMS kurulumuna ba\u015flamadan \u00f6nceki ilk ve en \u00f6nemli ad\u0131mlard\u0131r.<\/p>\n<h4>Sanal Ortam Olu\u015fturma<\/h4>\n<p>\u00d6ncelikle, projeniz i\u00e7in bir dizin olu\u015fturun ve bu dizine ge\u00e7i\u015f yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">mkdir myfeincms_project\ncd myfeincms_project<\/code><\/pre>\n<p>\u015eimdi, bu dizin i\u00e7inde bir sanal ortam olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">python -m venv venv<\/code><\/pre>\n<p>Bu komut, <code>myfeincms_project<\/code> dizini i\u00e7inde <code>venv<\/code> ad\u0131nda bir dizin olu\u015fturacak ve bu dizin i\u00e7inde izole bir Python ortam\u0131 kuracakt\u0131r.<\/p>\n<h4>Sanal Ortam\u0131 Etkinle\u015ftirme<\/h4>\n<p>Sanal ortam\u0131 etkinle\u015ftirmek i\u00e7in i\u015fletim sisteminize g\u00f6re farkl\u0131 komutlar kullan\u0131l\u0131r:<\/p>\n<p>*   <strong>Linux\/macOS:<\/strong><\/p>\n<pre><code class=\"language-bash\">source venv\/bin\/activate<\/code><\/pre>\n<p>*   <strong>Windows (Command Prompt):<\/strong><\/p>\n<pre><code class=\"language-bash\">venv\\Scripts\\activate.bat<\/code><\/pre>\n<p>*   <strong>Windows (PowerShell):<\/strong><\/p>\n<pre><code class=\"language-bash\">venv\\Scripts\\Activate.ps1<\/code><\/pre>\n<p>Sanal ortam etkinle\u015ftirildi\u011finde, komut isteminizin ba\u015f\u0131nda <code>(venv)<\/code> gibi bir ifade g\u00f6receksiniz.<\/p>\n<h4>Django Kurulumu ve Proje Olu\u015fturma<\/h4>\n<p>Sanal ortam etkin durumdayken, Django&#8217;yu kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">pip install Django<\/code><\/pre>\n<p>Django kurulduktan sonra, yeni bir Django projesi olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">django-admin startproject config .<\/code><\/pre>\n<p>Burada <code>config<\/code> projenizin ana yap\u0131land\u0131rma dizini olacak, <code>.<\/code> ise projenin mevcut dizinde olu\u015fturulmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h4>Veritaban\u0131 ve S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h4>\n<p>\u0130lk Django projemiz i\u00e7in temel veritaban\u0131 tablolar\u0131n\u0131 olu\u015ftural\u0131m ve y\u00f6netim paneline eri\u015fim i\u00e7in bir s\u00fcper kullan\u0131c\u0131 tan\u0131mlayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">python manage.py migrate\npython manage.py createsuperuser<\/code><\/pre>\n<p>Bu ad\u0131mlarla birlikte, FeinCMS kurulumuna haz\u0131r bir Django projesi temeli olu\u015fturmu\u015f oluyoruz.<\/p>\n<h3>FeinCMS Kurulumu<\/h3>\n<p>Art\u0131k Django projemiz haz\u0131r oldu\u011funa g\u00f6re, FeinCMS&#8217;i kurmaya ve yap\u0131land\u0131rmaya ba\u015flayabiliriz.<\/p>\n<h4>FeinCMS ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 Y\u00fckleme<\/h4>\n<p>Sanal ortam\u0131n\u0131z etkin durumdayken, FeinCMS&#8217;i pip arac\u0131l\u0131\u011f\u0131yla y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">pip install feincms Pillow<\/code><\/pre>\n<p><code>Pillow<\/code>, FeinCMS&#8217;in resim i\u015fleme yetenekleri i\u00e7in gereklidir.<\/p>\n<h4><code>INSTALLED_APPS<\/code> Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>FeinCMS ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 Django projenize tan\u0131tmak i\u00e7in <code>config\/settings.py<\/code> dosyan\u0131zdaki <code>INSTALLED_APPS<\/code> listesini g\u00fcncellemeniz gerekir. S\u0131ralama \u00f6nemlidir, bu y\u00fczden a\u015fa\u011f\u0131daki gibi eklemeniz tavsiye edilir:<\/p>\n<pre><code class=\"language-python\"># config\/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\n    # FeinCMS ve ba\u011f\u0131ml\u0131l\u0131klar\u0131\n    'mptt',  # FeinCMS'in a\u011fa\u00e7 yap\u0131lar\u0131 i\u00e7in\n    'feincms',\n    'feincms.module.page',  # Sayfa mod\u00fcl\u00fc\n    'feincms.module.medialibrary', # Medya k\u00fct\u00fcphanesi mod\u00fcl\u00fc\n    # 'feincms.module.extensions', # \u0130ste\u011fe ba\u011fl\u0131, ek uzant\u0131lar i\u00e7in\n]<\/code><\/pre>\n<p>*   <code>mptt<\/code>: Django i\u00e7in Modifiye Edilmi\u015f \u00d6nek Ge\u00e7i\u015f A\u011fac\u0131 (Modified Preorder Tree Traversal) uygulamas\u0131n\u0131 sa\u011flar ve FeinCMS&#8217;in sayfa hiyerar\u015filerini y\u00f6netmesi i\u00e7in gereklidir.<br \/>\n*   <code>feincms<\/code>: FeinCMS&#8217;in \u00e7ekirdek uygulamas\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>feincms.module.page<\/code>: Sayfa y\u00f6netimi i\u00e7in gerekli mod\u00fcld\u00fcr. Bu mod\u00fcl olmadan FeinCMS ile sayfa olu\u015fturamazs\u0131n\u0131z.<br \/>\n*   <code>feincms.module.medialibrary<\/code>: Resimler, dosyalar ve di\u011fer medya \u00f6\u011felerini y\u00f6netmek i\u00e7in bir medya k\u00fct\u00fcphanesi sa\u011flar.<br \/>\n*   <code>feincms.module.extensions<\/code>: SEO, al\u0131nt\u0131 gibi ek \u00f6zellikler sunan uzant\u0131lar\u0131 etkinle\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>Veritaban\u0131 Migrasyonlar\u0131<\/h4>\n<p><code>INSTALLED_APPS<\/code> listesini g\u00fcncelledikten sonra, FeinCMS&#8217;in ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n veritaban\u0131 tablolar\u0131n\u0131 olu\u015fturmak i\u00e7in migrasyonlar\u0131 \u00e7al\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code class=\"language-bash\">python manage.py migrate<\/code><\/pre>\n<p>Bu komut, <code>mptt<\/code>, <code>feincms<\/code> ve di\u011fer ekledi\u011finiz FeinCMS mod\u00fcllerinin veritaban\u0131 \u015femalar\u0131n\u0131 uygulayacakt\u0131r.<\/p>\n<h3>FeinCMS Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>FeinCMS&#8217;in projenizle d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in <code>urls.py<\/code> ve <code>settings.py<\/code> dosyalar\u0131nda baz\u0131 ek yap\u0131land\u0131rmalar yapman\u0131z gerekmektedir.<\/p>\n<h4><code>urls.py<\/code> G\u00fcncelleme<\/h4>\n<p>FeinCMS&#8217;in URL y\u00f6nlendirmelerini projenize dahil etmek i\u00e7in <code>config\/urls.py<\/code> dosyan\u0131z\u0131 g\u00fcncellemelisiniz. FeinCMS, sayfa URL&#8217;lerini kendi i\u00e7inde y\u00f6netti\u011fi i\u00e7in, t\u00fcm k\u00f6k URL&#8217;leri ona y\u00f6nlendirmek en yayg\u0131n yakla\u015f\u0131md\u0131r.<\/p>\n<pre><code class=\"language-python\"># config\/urls.py\n\nfrom django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('', include('feincms.urls')), # FeinCMS URL'lerini dahil et\n]<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>admin\/<\/code> d\u0131\u015f\u0131ndaki t\u00fcm URL isteklerini FeinCMS&#8217;in sayfa \u00e7\u00f6z\u00fcmleyicisine y\u00f6nlendirecektir.<\/p>\n<h4><code>settings.py<\/code> Ayarlar\u0131<\/h4>\n<p>FeinCMS&#8217;in d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in <code>settings.py<\/code> dosyan\u0131zda ek ayarlar yapman\u0131z gerekebilir. \u00d6zellikle statik dosyalar, medya dosyalar\u0131 ve zengin metin d\u00fczenleyici yap\u0131land\u0131rmas\u0131 \u00f6nemlidir.<\/p>\n<pre><code class=\"language-python\"># config\/settings.py\n\n<h2>... di\u011fer ayarlar ...<\/h2>\n\n<h2>Statik ve Medya Dosyalar\u0131<\/h2>\nSTATIC_URL = '\/static\/'\nSTATIC_ROOT = BASE_DIR \/ 'staticfiles' # \u00dcretim i\u00e7in\nMEDIA_URL = '\/media\/'\nMEDIA_ROOT = BASE_DIR \/ 'media'       # Kullan\u0131c\u0131 taraf\u0131ndan y\u00fcklenen dosyalar i\u00e7in\n\n<h2>FeinCMS zengin metin d\u00fczenleyici yap\u0131land\u0131rmas\u0131 (\u00f6rne\u011fin TinyMCE veya CKEditor)<\/h2>\n<h2>FeinCMS, varsay\u0131lan olarak TinyMCE'yi kullan\u0131r ve bunu yap\u0131land\u0131rmak i\u00e7in baz\u0131 varsay\u0131lanlar sa\u011flar.<\/h2>\n<h2>E\u011fer farkl\u0131 bir edit\u00f6r kullanacaksan\u0131z veya TinyMCE'yi \u00f6zelle\u015ftirecekseniz buray\u0131 de\u011fi\u015ftirebilirsiniz.<\/h2>\nFEINCMS_RICHTEXT_INIT_CONTEXT = {\n    'TINYMCE_JS_URL': STATIC_URL + 'tinymce\/tinymce.min.js',\n    'TINYMCE_CONFIG': {\n        'plugins': 'advlist,autolink,lists,link,image,charmap,preview,anchor,'\n                   'searchreplace,visualblocks,code,fullscreen,insertdatetime,media,table,code,help,wordcount',\n        'toolbar': 'undo redo | formatselect | '\n                   'bold italic backcolor | alignleft aligncenter '\n                   'alignright alignjustify | bullist numlist outdent indent | '\n                   'removeformat | help',\n        'menubar': 'file edit view insert format tools table help',\n        'height': 300,\n        'skin': 'oxide', # veya 'dark'\n        'content_css': 'default',\n    },\n}\nFEINCMS_RICHTEXT_INIT_TEMPLATE = 'admin\/feincms\/richtext\/init_tinymce.html'\n\n<h2>... di\u011fer ayarlar ...<\/code><\/pre>\n<\/h2>\n<p>*   <strong><code>STATIC_URL<\/code> ve <code>STATIC_ROOT<\/code><\/strong>: Django&#8217;nun statik dosyalar\u0131n\u0131 (CSS, JS, resimler) y\u00f6netmek i\u00e7in gereklidir. FeinCMS admin paneli de bu statik dosyalar\u0131 kullan\u0131r.<br \/>\n*   <strong><code>MEDIA_URL<\/code> ve <code>MEDIA_ROOT<\/code><\/strong>: Kullan\u0131c\u0131lar\u0131n y\u00fckledi\u011fi resimler ve di\u011fer dosyalar i\u00e7in kullan\u0131l\u0131r. FeinCMS&#8217;in medya k\u00fct\u00fcphanesi bu ayarlar\u0131 kullan\u0131r.<br \/>\n*   <strong><code>FEINCMS_RICHTEXT_INIT_CONTEXT<\/code> ve <code>FEINCMS_RICHTEXT_INIT_TEMPLATE<\/code><\/strong>: FeinCMS&#8217;in y\u00f6netim panelindeki zengin metin d\u00fczenleyicisini (varsay\u0131lan olarak TinyMCE) yap\u0131land\u0131rmak i\u00e7in kullan\u0131l\u0131r. Bu ayarlar, d\u00fczenleyicinin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc, eklentilerini ve butonlar\u0131n\u0131 \u00f6zelle\u015ftirmenize olanak tan\u0131r. Kendi TinyMCE kurulumunuzu veya farkl\u0131 bir d\u00fczenleyiciyi entegre etmek isterseniz bu ayarlar\u0131 de\u011fi\u015ftirmeniz gerekecektir. TinyMCE&#8217;nin <code>tinymce.min.js<\/code> dosyas\u0131n\u0131 <code>STATIC_ROOT<\/code> alt\u0131nda <code>tinymce<\/code> klas\u00f6r\u00fcne kopyalaman\u0131z gerekebilir.<\/p>\n<p>Bu temel yap\u0131land\u0131rmalarla, FeinCMS projenizin temelini atm\u0131\u015f olursunuz.<\/p>\n<h3>\u0130lk FeinCMS Sayfan\u0131z\u0131 Olu\u015fturma<\/h3>\n<p>FeinCMS&#8217;in kalbi, sayfalar ve bu sayfalar\u0131 olu\u015fturan i\u00e7erik par\u00e7ac\u0131klar\u0131d\u0131r. \u015eimdi, ilk sayfa modelimizi tan\u0131mlayacak, \u015fablonlar\u0131m\u0131z\u0131 olu\u015fturacak ve y\u00f6netim panelinden bir sayfa ekleyece\u011fiz.<\/p>\n<h4><code>page.models.py<\/code> Olu\u015fturma<\/h4>\n<p>FeinCMS, <code>feincms.module.page.models.Page<\/code> modelini kullanarak sayfa hiyerar\u015fisini ve i\u00e7eri\u011fi y\u00f6netir. Bu modeli projenize entegre etmek i\u00e7in, genellikle uygulaman\u0131z\u0131n <code>models.py<\/code> dosyas\u0131nda veya ayr\u0131 bir <code>page.models.py<\/code> dosyas\u0131nda yap\u0131land\u0131rmalar\u0131 yapars\u0131n\u0131z. Projenizin k\u00f6k dizininde (veya bir Django uygulamas\u0131 i\u00e7inde) <code>page.models.py<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-python\"># page.models.py\n\nfrom django.utils.translation import gettext_lazy as _\n\nfrom feincms.module.page.models import Page\nfrom feincms.content.richtext.models import RichTextContent\nfrom feincms.content.image.models import ImageContent\nfrom feincms.content.file.models import FileContent\n\n<h2>1. Sayfa \u015eablonlar\u0131n\u0131 Tan\u0131mlama<\/h2>\nPage.register_templates(\n    {\n        'key': 'base',\n        'title': _('Temel \u015eablon'),\n        'path': 'page\/base.html',\n        'regions': (\n            ('main', _('Ana \u0130\u00e7erik Alan\u0131')),\n            ('sidebar', _('Yan Men\u00fc Alan\u0131')),\n        ),\n    },\n    {\n        'key': 'two_column',\n        'title': _('\u0130ki S\u00fctunlu \u015eablon'),\n        'path': 'page\/two_column.html',\n        'regions': (\n            ('main', _('Sol S\u00fctun')),\n            ('right_column', _('Sa\u011f S\u00fctun')),\n        ),\n    },\n)\n\n<h2>2. \u0130\u00e7erik Tiplerini Kaydetme<\/h2>\n<h2>Bu i\u00e7erik tipleri, y\u00f6netim panelinde bir sayfaya eklenebilecek bloklard\u0131r.<\/h2>\nPage.create_content_type(RichTextContent, regions=('main', 'right_column', 'sidebar'))\nPage.create_content_type(ImageContent, regions=('main', 'right_column', 'sidebar'))\nPage.create_content_type(FileContent, regions=('main', 'right_column', 'sidebar'))\n\n<h2>3. \u0130ste\u011fe Ba\u011fl\u0131: Uzant\u0131lar\u0131 Kaydetme<\/h2>\n<h2>FeinCMS, SEO veya al\u0131nt\u0131 gibi ek \u00f6zellikler i\u00e7in uzant\u0131lar sunar.<\/h2>\n<h2>Bunlar\u0131 kullanmak i\u00e7in 'feincms.module.extensions' uygulamas\u0131n\u0131 INSTALLED_APPS'a eklemeyi unutmay\u0131n.<\/h2>\n<h2>from feincms.module.extensions.seo import SEOExtension<\/h2>\n<h2>Page.register_extensions(SEOExtension)<\/h2>\n\n<h2>from feincms.module.extensions.excerpt import ExcerptExtension<\/h2>\n<h2>Page.register_extensions(ExcerptExtension)<\/code><\/pre>\n<\/h2>\n<p>Bu dosya, FeinCMS&#8217;in sayfa modelini yap\u0131land\u0131rmak i\u00e7in merkezi bir yerdir:<\/p>\n<p>*   <strong><code>Page.register_templates(...)<\/code><\/strong>: Bu k\u0131s\u0131m, y\u00f6netim panelinde sayfa olu\u015ftururken se\u00e7ebilece\u011finiz farkl\u0131 \u015fablonlar\u0131 tan\u0131mlar. Her \u015fablon bir <code>key<\/code> (benzersiz tan\u0131mlay\u0131c\u0131), <code>title<\/code> (y\u00f6netim panelinde g\u00f6r\u00fcnen ad), <code>path<\/code> (\u015fablon dosyas\u0131n\u0131n yolu) ve <code>regions<\/code> (i\u00e7erik bloklar\u0131n\u0131n yerle\u015ftirilebilece\u011fi alanlar) i\u00e7erir.<br \/>\n*   <strong><code>Page.create_content_type(...)<\/code><\/strong>: Bu metod, sayfalara eklenebilecek i\u00e7erik t\u00fcrlerini (content types) kaydeder. \u00d6rne\u011fin, <code>RichTextContent<\/code> zengin metin edit\u00f6r\u00fc sa\u011flar, <code>ImageContent<\/code> resim y\u00fcklemeyi, <code>FileContent<\/code> ise dosya y\u00fcklemeyi m\u00fcmk\u00fcn k\u0131lar. <code>regions<\/code> parametresi, bu i\u00e7erik t\u00fcrlerinin hangi b\u00f6lgelerde kullan\u0131labilece\u011fini belirtir.<br \/>\n*   <strong><code>Page.register_extensions(...)<\/code><\/strong>: FeinCMS&#8217;in sundu\u011fu uzant\u0131lar\u0131 kaydetmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, <code>SEOExtension<\/code> sayfalara SEO ba\u015fl\u0131\u011f\u0131, anahtar kelimeler ve a\u00e7\u0131klama alanlar\u0131 ekler.<\/p>\n<p>Bu dosyay\u0131 olu\u015fturduktan sonra, Django&#8217;nun bu modeli tan\u0131mas\u0131 i\u00e7in <code>config\/settings.py<\/code> dosyan\u0131za k\u00fc\u00e7\u00fck bir ekleme yapman\u0131z gerekebilir. E\u011fer <code>page.models.py<\/code> dosyan\u0131z\u0131 ayr\u0131 bir Django uygulamas\u0131 (\u00f6rne\u011fin <code>my_app<\/code>) i\u00e7inde olu\u015fturduysan\u0131z, <code>my_app<\/code>&#8216;i <code>INSTALLED_APPS<\/code>&#8216;a eklemeniz yeterlidir. E\u011fer do\u011frudan projenizin k\u00f6k dizininde olu\u015fturduysan\u0131z, Django&#8217;nun otomatik olarak modelinizi tan\u0131mas\u0131 i\u00e7in bir <code>__init__.py<\/code> dosyas\u0131 olu\u015fturup modelinizi import etmeniz gerekebilir, ancak FeinCMS genellikle bu t\u00fcr yap\u0131land\u0131rmalar\u0131 do\u011frudan <code>settings.py<\/code> veya <code>urls.py<\/code> gibi yerlerde yap\u0131lmas\u0131n\u0131 bekler. En temiz yol, bu model tan\u0131m\u0131n\u0131 \u00f6zel bir Django uygulamas\u0131na koymakt\u0131r. \u00d6rne\u011fin, <code>content<\/code> ad\u0131nda bir uygulama olu\u015fturup i\u00e7ine koymak:<\/p>\n<pre><code class=\"language-bash\">python manage.py startapp content<\/code><\/pre>\n<p>Sonra <code>content\/models.py<\/code> i\u00e7ine yukar\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n ve <code>INSTALLED_APPS<\/code>&#8216;a <code>'content'<\/code> ekleyin.<\/p>\n<pre><code class=\"language-python\"># config\/settings.py\nINSTALLED_APPS = [\n    # ...\n    'content', # Yeni uygulaman\u0131z\n    # ...\n]<\/code><\/pre>\n<h4>\u015eablon Dosyalar\u0131 Olu\u015fturma<\/h4>\n<p>Yukar\u0131da tan\u0131mlad\u0131\u011f\u0131m\u0131z \u015fablonlar i\u00e7in ger\u00e7ek HTML dosyalar\u0131n\u0131 olu\u015fturmam\u0131z gerekiyor. Django&#8217;nun \u015fablon arama mekanizmas\u0131n\u0131 kullanarak, projenizin k\u00f6k dizininde <code>templates<\/code> ad\u0131nda bir klas\u00f6r olu\u015fturun ve i\u00e7ine <code>page<\/code> ad\u0131nda bir alt klas\u00f6r ekleyin: <code>templates\/page\/<\/code>.<\/p>\n<pre><code class=\"language-html\"><!-- templates\/base.html (Ana HTML iskeleti) -->\n<!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>{% block title %}FeinCMS Sitem{% endblock %}<\/title>\n    <link rel=\"stylesheet\" href=\"{% static 'css\/style.css' %}\"> {# E\u011fer varsa #}\n<\/head>\n<body>\n    <header>\n        \n        <nav>\n            <ul>\n                <li><a href=\"\/\">Anasayfa<\/a><\/li>\n                {# FeinCMS men\u00fcs\u00fcn\u00fc buraya ekleyebilirsiniz #}\n            <\/ul>\n        <\/nav>\n    <\/header>\n\n    <main>\n        {% block content %}\n        {% endblock %}\n    <\/main>\n\n    <footer>\n        <p>&copy; 2023 FeinCMS Projesi<\/p>\n    <\/footer>\n<\/body>\n<\/html><\/code><\/pre>\n<pre><code class=\"language-html\"><!-- templates\/page\/base.html (FeinCMS Temel Sayfa \u015eablonu) -->\n{% extends \"base.html\" %}\n{% load feincms_tags %} {# feincms_render_region tag'i i\u00e7in #}\n\n{% block title %}{{ page.title }} | {% endblock %}\n\n{% block content %}\n    <div class=\"content-wrapper\">\n        <aside class=\"sidebar\">\n            {% feincms_render_region page \"sidebar\" %}\n        <\/aside>\n        <div class=\"main-content\">\n            <h2>{{ page.title }}<\/h2>\n            {% feincms_render_region page \"main\" %}\n        <\/div>\n    <\/div>\n{% endblock %}<\/code><\/pre>\n<pre><code class=\"language-html\"><!-- templates\/page\/two_column.html (FeinCMS \u0130ki S\u00fctunlu Sayfa \u015eablonu) -->\n{% extends \"base.html\" %}\n{% load feincms_tags %}\n\n{% block title %}{{ page.title }} | {% endblock %}\n\n{% block content %}\n    <div class=\"two-column-layout\">\n        <div class=\"left-column\">\n            <h2>{{ page.title }}<\/h2>\n            {% feincms_render_region page \"main\" %}\n        <\/div>\n        <div class=\"right-column\">\n            {% feincms_render_region page \"right_column\" %}\n        <\/div>\n    <\/div>\n{% endblock %}<\/code><\/pre>\n<p>*   <code>{% load feincms_tags %}<\/code>: FeinCMS&#8217;in \u00f6zel \u015fablon etiketlerini y\u00fcklemek i\u00e7in gereklidir.<br \/>\n*   <code>{% feincms_render_region page \"region_ad\u0131\" %}<\/code>: Bu etiket, y\u00f6netim panelinde ilgili b\u00f6lgeye (region) eklenen t\u00fcm i\u00e7erik bloklar\u0131n\u0131 i\u015fler ve HTML&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/p>\n<p>\u015eablonlar\u0131 olu\u015fturduktan sonra, Django&#8217;nun <code>TEMPLATES<\/code> ayarlar\u0131nda <code>DIRS<\/code> listesine <code>BASE_DIR \/ 'templates'<\/code> ekledi\u011finizden emin olun:<\/p>\n<pre><code class=\"language-python\"># config\/settings.py\nTEMPLATES = [\n    {\n        # ...\n        'DIRS': [BASE_DIR \/ 'templates'],\n        # ...\n    },\n]<\/code><\/pre>\n<h4>Veritaban\u0131 G\u00fcncelleme<\/h4>\n<p>E\u011fer <code>content\/models.py<\/code> dosyan\u0131zda \u00f6zel modeller veya uzant\u0131lar tan\u0131mlad\u0131ysan\u0131z, bunlar\u0131 veritaban\u0131na yans\u0131tmak i\u00e7in migrasyonlar\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">python manage.py makemigrations content # E\u011fer 'content' uygulaman\u0131z varsa\npython manage.py migrate<\/code><\/pre>\n<p><code>Page<\/code> modeli FeinCMS taraf\u0131ndan sa\u011fland\u0131\u011f\u0131 i\u00e7in genellikle ek bir <code>makemigrations<\/code> gerektirmez, ancak \u00f6zel i\u00e7erik tipleri veya uzant\u0131lar tan\u0131mlad\u0131\u011f\u0131n\u0131zda bu ad\u0131m \u00f6nemlidir.<\/p>\n<h3>Y\u00f6netim Paneli \u00dczerinden \u0130\u00e7erik Olu\u015fturma<\/h3>\n<p>T\u00fcm kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 tamamlad\u0131ktan sonra, FeinCMS y\u00f6netim panelini kullanarak ilk sayfan\u0131z\u0131 olu\u015fturmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<p>1.  <strong>Geli\u015ftirme Sunucusunu Ba\u015flatma<\/strong>:<\/p>\n<pre><code class=\"language-bash\">python manage.py runserver<\/code><\/pre>\n<p>2.  <strong>Y\u00f6netim Paneline Giri\u015f<\/strong>:<br \/>\n    Taray\u0131c\u0131n\u0131zda <code>http:\/\/127.0.0.1:8000\/admin\/<\/code> adresine gidin ve <code>createsuperuser<\/code> komutuyla olu\u015fturdu\u011funuz kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile giri\u015f yap\u0131n.<br \/>\n3.  <strong>Sayfa Olu\u015fturma<\/strong>:<br \/>\n    Y\u00f6netim panelinde, &#8220;FEINCMS&#8221; ba\u015fl\u0131\u011f\u0131 alt\u0131nda &#8220;Sayfalar&#8221; (Pages) b\u00f6l\u00fcm\u00fcn\u00fc g\u00f6receksiniz. &#8220;Sayfa ekle&#8221; (Add page) d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n4.  <strong>Sayfa Bilgilerini Girme<\/strong>:<br \/>\n    *   <strong>Ba\u015fl\u0131k (Title)<\/strong>: Sayfan\u0131z\u0131n ba\u015fl\u0131\u011f\u0131n\u0131 girin (\u00f6rne\u011fin, &#8220;Anasayfa&#8221;).<br \/>\n    *   <strong>URL slug&#8217;\u0131 (Slug)<\/strong>: Sayfan\u0131z\u0131n URL&#8217;sinde kullan\u0131lacak benzersiz bir slug girin (\u00f6rne\u011fin, &#8220;anasayfa&#8221;). E\u011fer bo\u015f b\u0131rak\u0131rsan\u0131z, FeinCMS ba\u015fl\u0131\u011fa g\u00f6re otomatik olarak olu\u015fturacakt\u0131r.<br \/>\n    *   <strong>\u015eablon (Template)<\/strong>: A\u00e7\u0131l\u0131r men\u00fcden &#8220;Temel \u015eablon&#8221; veya &#8220;\u0130ki S\u00fctunlu \u015eablon&#8221; gibi daha \u00f6nce tan\u0131mlad\u0131\u011f\u0131n\u0131z \u015fablonlardan birini se\u00e7in.<br \/>\n    *   <strong>Durum (Status)<\/strong>: Sayfan\u0131n yay\u0131nlan\u0131p yay\u0131nlanmayaca\u011f\u0131n\u0131 belirleyin. &#8220;Yay\u0131nland\u0131&#8221; (Published) se\u00e7ene\u011fini i\u015faretleyin.<br \/>\n    *   <strong>Ana sayfa (Is home page)<\/strong>: E\u011fer bu sayfa sitenizin ana sayfas\u0131 olacaksa bu kutuyu i\u015faretleyin.<br \/>\n5.  <strong>\u0130\u00e7erik Ekleme<\/strong>:<br \/>\n    Sayfa formunun alt\u0131nda, tan\u0131mlad\u0131\u011f\u0131n\u0131z &#8220;Ana \u0130\u00e7erik Alan\u0131&#8221;, &#8220;Yan Men\u00fc Alan\u0131&#8221; gibi b\u00f6lgeleri g\u00f6receksiniz. Her b\u00f6lgenin alt\u0131nda &#8220;\u0130\u00e7erik ekle&#8221; (Add content) d\u00fc\u011fmesine t\u0131klayarak <code>RichTextContent<\/code>, <code>ImageContent<\/code> veya <code>FileContent<\/code> gibi i\u00e7erik t\u00fcrlerini ekleyebilirsiniz.<br \/>\n    *   <strong>RichTextContent<\/strong>: Bir metin alan\u0131 a\u00e7\u0131lacak ve buraya zengin metin (kal\u0131n, italik, ba\u011flant\u0131 vb.) girebilirsiniz.<br \/>\n    *   <strong>ImageContent<\/strong>: Bir resim y\u00fcklemenize veya medya k\u00fct\u00fcphanesinden se\u00e7menize olanak tan\u0131r.<br \/>\n    *   <strong>FileContent<\/strong>: Bir dosya y\u00fcklemenize olanak tan\u0131r.<br \/>\n    \u0130\u00e7erik bloklar\u0131n\u0131 s\u00fcr\u00fckleyip b\u0131rakarak s\u0131ralar\u0131n\u0131 de\u011fi\u015ftirebilirsiniz.<br \/>\n6.  <strong>Kaydetme ve G\u00f6r\u00fcnt\u00fcleme<\/strong>:<br \/>\n    Sayfay\u0131 kaydettikten sonra, taray\u0131c\u0131n\u0131zda <code>http:\/\/127.0.0.1:8000\/<\/code> adresine giderek ana sayfan\u0131z\u0131 veya olu\u015fturdu\u011funuz di\u011fer sayfalar\u0131n URL&#8217;lerini ziyaret ederek i\u00e7eri\u011finizi g\u00f6rebilirsiniz.<\/p>\n<h3>Medya K\u00fct\u00fcphanesi<\/h3>\n<p>FeinCMS&#8217;in medya k\u00fct\u00fcphanesi (<code>feincms.module.medialibrary<\/code>), sitenizdeki resimleri, belgeleri ve di\u011fer medya dosyalar\u0131n\u0131 merkezi bir yerden y\u00f6netmenizi sa\u011flar.<\/p>\n<p>*   <strong>Kurulum<\/strong>: <code>INSTALLED_APPS<\/code>&#8216;a <code>'feincms.module.medialibrary'<\/code> eklediyseniz ve <code>python manage.py migrate<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ysan\u0131z, medya k\u00fct\u00fcphanesi zaten etkin durumdad\u0131r.<br \/>\n*   <strong>Kullan\u0131m<\/strong>: Y\u00f6netim panelinde &#8220;FEINCMS&#8221; alt\u0131nda &#8220;Medya k\u00fct\u00fcphanesi&#8221; (Media library) b\u00f6l\u00fcm\u00fcn\u00fc bulacaks\u0131n\u0131z. Buradan yeni medya \u00f6\u011feleri y\u00fckleyebilir, mevcutlar\u0131 d\u00fczenleyebilir ve kategorize edebilirsiniz. <code>ImageContent<\/code> veya <code>FileContent<\/code> gibi i\u00e7erik t\u00fcrleri arac\u0131l\u0131\u011f\u0131yla sayfalara medya eklerken bu k\u00fct\u00fcphaneden se\u00e7im yapabilirsiniz.<\/p>\n<h3>Geli\u015fmi\u015f \u00d6zellikler ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>FeinCMS&#8217;in g\u00fcc\u00fc, mod\u00fcler yap\u0131s\u0131nda ve geni\u015fletilebilirli\u011findedir. \u0130\u015fte baz\u0131 geli\u015fmi\u015f \u00f6zellikler ve ipu\u00e7lar\u0131:<\/p>\n<h4>\u00d6zel \u0130\u00e7erik Tipleri Olu\u015fturma<\/h4>\n<p>FeinCMS&#8217;in sundu\u011fu <code>RichTextContent<\/code>, <code>ImageContent<\/code> gibi i\u00e7erik tipleri yeterli gelmedi\u011finde, kendi \u00f6zel i\u00e7erik tiplerinizi olu\u015fturabilirsiniz. Bu, bir sayfaya belirli bir veri yap\u0131s\u0131na sahip \u00f6zel bir blok eklemek istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>\u00d6rnek olarak, bir &#8220;\u0130leti\u015fim Formu&#8221; veya &#8220;\u00d6zel HTML&#8221; blo\u011fu olu\u015fturabiliriz. <code>content\/models.py<\/code> dosyan\u0131zda (veya uygun bir ba\u015fka <code>models.py<\/code> dosyas\u0131nda):<\/p>\n<pre><code class=\"language-python\"># content\/models.py (veya ba\u015fka bir uygulama i\u00e7inde)\n\nfrom django.db import models\nfrom feincms.module.page.models import Page\nfrom feincms.content.richtext.models import RichTextContent # \u00d6nceki tan\u0131mlar\n\nclass CustomHTMLContent(models.Model):\n    # Bu model, bir sayfaya ekleyebilece\u011finiz \u00f6zel bir i\u00e7erik blo\u011funu temsil eder.\n    text = models.TextField(_('HTML \u0130\u00e7eri\u011fi'))\n\n    class Meta:\n        abstract = True # Bu bir abstract model olmal\u0131, \u00e7\u00fcnk\u00fc FeinCMS onu temel alacak.\n        verbose_name = _('\u00d6zel HTML \u0130\u00e7eri\u011fi')\n        verbose_name_plural = _('\u00d6zel HTML \u0130\u00e7erikleri')\n\n    def render(self, <em><\/em>kwargs):\n        # Bu metod, i\u00e7erik blo\u011funun frontend'de nas\u0131l i\u015flenece\u011fini tan\u0131mlar.\n        return self.text\n\n<h2>Page modelinize yeni i\u00e7erik tipini kaydetme<\/h2>\nPage.create_content_type(CustomHTMLContent, regions=('main', 'sidebar'))<\/code><\/pre>\n<p>Bu kodu ekledikten sonra, <code>python manage.py makemigrations content<\/code> ve <code>python manage.py migrate<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir. Art\u0131k y\u00f6netim panelinde sayfa d\u00fczenlerken &#8220;\u00d6zel HTML \u0130\u00e7eri\u011fi&#8221; ad\u0131nda yeni bir i\u00e7erik blo\u011fu se\u00e7ene\u011fi g\u00f6receksiniz.<\/p>\n<h4>Uzant\u0131lar (Extensions) Kullan\u0131m\u0131<\/h4>\n<p>FeinCMS, sayfa modeline ek i\u015flevsellik katmak i\u00e7in \u00e7e\u015fitli uzant\u0131lar sunar.<\/p>\n<p>*   <strong>SEO Uzant\u0131s\u0131 (<code>SEOExtension<\/code>)<\/strong>: Sayfalara SEO ba\u015fl\u0131\u011f\u0131, anahtar kelimeler ve a\u00e7\u0131klama alanlar\u0131 ekler.<\/p>\n<pre><code class=\"language-python\"># content\/models.py\n    from feincms.module.extensions.seo import SEOExtension\n    Page.register_extensions(SEOExtension)<\/code><\/pre>\n<p>    Bunu etkinle\u015ftirdikten sonra, sayfa d\u00fczenleme ekran\u0131nda SEO ile ilgili ek alanlar g\u00f6receksiniz. Bu alanlar\u0131 \u015fablonlar\u0131n\u0131zda <code>{{ page.seo_title }}<\/code>, <code>{{ page.meta_keywords }}<\/code>, <code>{{ page.meta_description }}<\/code> gibi kullanabilirsiniz.<\/p>\n<p>*   <strong>Al\u0131nt\u0131 Uzant\u0131s\u0131 (<code>ExcerptExtension<\/code>)<\/strong>: Sayfalar i\u00e7in k\u0131sa bir \u00f6zet veya al\u0131nt\u0131 alan\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-python\"># content\/models.py\n    from feincms.module.extensions.excerpt import ExcerptExtension\n    Page.register_extensions(ExcerptExtension)<\/code><\/pre>\n<p>    \u015eablonlar\u0131n\u0131zda <code>{{ page.excerpt }}<\/code> ile kullanabilirsiniz.<\/p>\n<p>Uzant\u0131lar\u0131 kullanmadan \u00f6nce <code>feincms.module.extensions<\/code> uygulamas\u0131n\u0131n <code>INSTALLED_APPS<\/code> i\u00e7inde oldu\u011fundan emin olun.<\/p>\n<h4>\u00c7oklu Dil Deste\u011fi (Multilingual Support)<\/h4>\n<p>FeinCMS, <code>feincms.module.extensions.translations<\/code> uzant\u0131s\u0131 ile \u00e7oklu dil deste\u011fi sunar. Bu uzant\u0131, her sayfan\u0131n farkl\u0131 dillerde \u00e7evirilerini olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-python\"># content\/models.py\nfrom feincms.module.extensions.translations import TranslationExtension\nPage.register_extensions(TranslationExtension)<\/code><\/pre>\n<p>Ayr\u0131ca, <code>settings.py<\/code> dosyan\u0131zda <code>LANGUAGES<\/code> ve <code>USE_I18N = True<\/code> ayarlar\u0131n\u0131 yapman\u0131z gerekir. \u00c7ok dilli URL&#8217;ler ve i\u00e7eri\u011fin y\u00f6netimi i\u00e7in genellikle <code>django-modeltranslation<\/code> gibi ek paketlerle entegrasyon d\u00fc\u015f\u00fcn\u00fcl\u00fcr.<\/p>\n<h4>Statik Dosyalar ve Medya Dosyalar\u0131<\/h4>\n<p>Geli\u015ftirme ortam\u0131nda <code>python manage.py runserver<\/code> komutu statik ve medya dosyalar\u0131n\u0131 otomatik olarak sunar. Ancak \u00fcretim ortam\u0131nda bu dosyalar\u0131n web sunucusu (Nginx, Apache) taraf\u0131ndan sunulmas\u0131 gerekir.<\/p>\n<p>*   <code>python manage.py collectstatic<\/code>: T\u00fcm statik dosyalar\u0131 <code>STATIC_ROOT<\/code> dizinine toplar. Bu dizini web sunucunuzun eri\u015febilece\u011fi \u015fekilde yap\u0131land\u0131rmal\u0131s\u0131n\u0131z.<br \/>\n*   <code>MEDIA_ROOT<\/code> dizini de web sunucusu taraf\u0131ndan okunabilir ve yaz\u0131labilir olmal\u0131d\u0131r, b\u00f6ylece kullan\u0131c\u0131lar taraf\u0131ndan y\u00fcklenen medya dosyalar\u0131 eri\u015filebilir olur.<\/p>\n<h4>\u00dcretim Ortam\u0131 \u0130\u00e7in Optimizasyon<\/h4>\n<p>*   <strong>Veritaban\u0131<\/strong>: \u00dcretimde SQLite yerine PostgreSQL veya MySQL gibi g\u00fc\u00e7l\u00fc bir veritaban\u0131 kullan\u0131n.<br \/>\n*   <strong>Web Sunucusu<\/strong>: Django&#8217;yu do\u011frudan \u00e7al\u0131\u015ft\u0131rmak yerine Gunicorn veya uWSGI gibi bir WSGI sunucusu kullan\u0131n. Nginx veya Apache gibi bir web sunucusu ile bu WSGI sunucusu aras\u0131nda bir proxy g\u00f6revi g\u00f6recektir.<br \/>\n*   <strong>\u00d6nbellekleme (Caching)<\/strong>: FeinCMS, \u00f6nbellekleme i\u00e7in Django&#8217;nun yerle\u015fik \u00f6nbellekleme \u00e7er\u00e7evesini kullanabilir. <code>settings.py<\/code> dosyan\u0131zda uygun bir \u00f6nbellekleme ayar\u0131 (\u00f6rne\u011fin Redis veya Memcached tabanl\u0131) yap\u0131land\u0131r\u0131n.<\/p>\n<h3>Sorun Giderme ve Yayg\u0131n Hatalar<\/h3>\n<p>FeinCMS kurulumu ve kullan\u0131m\u0131 s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong><code>ModuleNotFoundError: No module named 'mptt'<\/code><\/strong>: <code>mptt<\/code> paketinin <code>pip install mptt<\/code> ile kurulu oldu\u011fundan ve <code>INSTALLED_APPS<\/code>&#8216;a ekledi\u011finizden emin olun.<br \/>\n*   <strong><code>TemplateDoesNotExist<\/code> hatalar\u0131<\/strong>:<br \/>\n    *   \u015eablon dosyas\u0131n\u0131n yolu (<code>path<\/code> parametresi <code>Page.register_templates<\/code> i\u00e7inde) do\u011fru mu?<br \/>\n    *   <code>settings.py<\/code> dosyas\u0131ndaki <code>TEMPLATES<\/code> ayarlar\u0131nda <code>DIRS<\/code> listesine <code>BASE_DIR \/ 'templates'<\/code> eklendi mi?<br \/>\n    *   <code>{% load feincms_tags %}<\/code> etiketi \u015fablonunuzda mevcut mu?<br \/>\n*   <strong>Y\u00f6netim panelinde i\u00e7erik bloklar\u0131 g\u00f6r\u00fcnm\u00fcyor<\/strong>:<br \/>\n    *   <code>Page.create_content_type()<\/code> metodunu kullanarak i\u00e7erik tiplerini kaydettiniz mi?<br \/>\n    *   <code>regions<\/code> parametresi do\u011fru ayarland\u0131 m\u0131?<br \/>\n    *   <code>python manage.py makemigrations<\/code> ve <code>python manage.py migrate<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131n\u0131z m\u0131?<br \/>\n*   <strong>Statik dosyalar (CSS\/JS) y\u00fcklenmiyor<\/strong>:<br \/>\n    *   <code>settings.py<\/code> dosyas\u0131nda <code>STATIC_URL<\/code> ve <code>STATIC_ROOT<\/code> do\u011fru ayarland\u0131 m\u0131?<br \/>\n    *   Geli\u015ftirme sunucusunda <code>DEBUG = True<\/code> ise, <code>django.contrib.staticfiles<\/code> <code>INSTALLED_APPS<\/code> i\u00e7inde olmal\u0131.<br \/>\n    *   \u00dcretimde <code>python manage.py collectstatic<\/code> \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131 m\u0131 ve web sunucusu <code>STATIC_ROOT<\/code> dizinini do\u011fru bir \u015fekilde sunuyor mu?<br \/>\n*   <strong>Resim y\u00fcklerken hata<\/strong>: <code>Pillow<\/code> k\u00fct\u00fcphanesinin <code>pip install Pillow<\/code> ile kurulu oldu\u011fundan emin olun.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>FeinCMS, Django geli\u015ftiricileri i\u00e7in son derece esnek ve g\u00fc\u00e7l\u00fc bir i\u00e7erik y\u00f6netim sistemi \u00e7er\u00e7evesidir. Mod\u00fcler yap\u0131s\u0131, blok tabanl\u0131 i\u00e7erik y\u00f6netimi ve geni\u015fletilebilirlik \u00f6zellikleri sayesinde, \u00f6zel ihtiya\u00e7lara g\u00f6re tasarlanm\u0131\u015f web siteleri ve uygulamalar olu\u015fturmak i\u00e7in ideal bir ara\u00e7t\u0131r. Bu rehberde, FeinCMS&#8217;in temel kurulumundan ilk sayfan\u0131z\u0131 olu\u015fturmaya, medya k\u00fct\u00fcphanesini kullanmaya ve geli\u015fmi\u015f \u00f6zelliklere kadar bir\u00e7ok konuyu ele ald\u0131k.<\/p>\n<p>FeinCMS, ba\u015flang\u0131\u00e7ta biraz daha fazla yap\u0131land\u0131rma gerektirse de, sundu\u011fu kontrol ve \u00f6zelle\u015ftirme imkanlar\u0131, karma\u015f\u0131k i\u00e7erik projelerinde geli\u015ftiricilere b\u00fcy\u00fck avantajlar sa\u011flar. Kendi i\u00e7erik tiplerinizi, \u015fablonlar\u0131n\u0131z\u0131 ve uzant\u0131lar\u0131n\u0131z\u0131 tan\u0131mlayarak, projenizin tam olarak istedi\u011finiz gibi \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<p>Unutmay\u0131n ki bu rehber bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. FeinCMS&#8217;in t\u00fcm potansiyelini ke\u015ffetmek i\u00e7in resmi dok\u00fcmantasyonunu incelemenizi ve topluluk kaynaklar\u0131ndan faydalanman\u0131z\u0131 \u015fiddetle tavsiye ederiz. \u0130yi geli\u015ftirmeler!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi\nDjango ekosistemi, web geli\u015ftiricilerine sundu\u011fu esneklik ve g\u00fc\u00e7l\u00fc yap\u0131s\u0131yla \u00f6ne \u00e7\u0131karken, i\u00e7erik","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-38656","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>FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 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\/feincms-kurulumu-ve-baslangic-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi\" \/>\n<meta property=\"og:description\" content=\"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi Django ekosistemi, web geli\u015ftiricilerine sundu\u011fu esneklik ve g\u00fc\u00e7l\u00fc yap\u0131s\u0131yla \u00f6ne \u00e7\u0131karken, i\u00e7erik\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-04T19:40:55+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\/feincms-kurulumu-ve-baslangic-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi\",\"datePublished\":\"2026-02-04T19:40:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/\"},\"wordCount\":2876,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/\",\"name\":\"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-04T19:40:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 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":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 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\/feincms-kurulumu-ve-baslangic-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi","og_description":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi Django ekosistemi, web geli\u015ftiricilerine sundu\u011fu esneklik ve g\u00fc\u00e7l\u00fc yap\u0131s\u0131yla \u00f6ne \u00e7\u0131karken, i\u00e7erik","og_url":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-04T19:40:55+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\/feincms-kurulumu-ve-baslangic-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi","datePublished":"2026-02-04T19:40:55+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/"},"wordCount":2876,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/","name":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-04T19:40:55+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/feincms-kurulumu-ve-baslangic-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FeinCMS Kurulumu ve Ba\u015flang\u0131\u00e7 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\/38656","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=38656"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38656\/revisions"}],"predecessor-version":[{"id":38657,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38656\/revisions\/38657"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}