Geliştirmeyi planladığınız web projesinde genel ayarların(genel ayar derken projenin settings.py ayarları değil) yapılmasını sağlayacak bir model geliştirip bu ayarların adminden yönetilmesini sağlayalım. Aşağıdaki adımları izleyerek. Ayarların projenize uygulanmasını sağlayabilirsiniz.
1. İlk olarak ayarların neleri içereceğini belirleyeceğiz tablomuzu hazırlıyoruz. Django framework de veritabanı tabloları modeller ile yapıldığını biliyoruz. Bunun için homeapp altında yer alan model.py dosyamızı açıp aşağıdaki kodları ekliyoruz.
homeapp-model.py içine:
from django.db import models
# Create your models here.
class SettingA(models.Model):
STATUS = (('True', 'Evet'), ('False', 'Hayır'))
title = models.CharField(max_length=30)
keywords = models.CharField(max_length=200)
description = models.CharField(max_length=200)
company = models.CharField(max_length=30)
address = models.CharField(null=True, blank=True, max_length=50)
phone = models.CharField(null=True, blank=True, max_length=15)
fax = models.CharField(null=True, blank=True, max_length=30)
contact = models.CharField(null=True, blank=True, max_length=30)
email = models.CharField(null=True, blank=True, max_length=200)
smtp_server = models.CharField(null=True, blank=True, max_length=20)
smtp_email = models.CharField(null=True, blank=True, max_length=20)
smtp_password = models.CharField(null=True, blank=True, max_length=10)
smtp_port = models.CharField(null=True, blank=True, max_length=4)
icon = models.ImageField(null=True, blank=True, default='default/default.jpg', upload_to='images/')
facebook = models.CharField(null=True, blank=True, max_length=20)
instagram = models.CharField(null=True, blank=True, max_length=20)
twitter = models.CharField(null=True, blank=True, max_length=20)
about_us = models.CharField(null=True, blank=True, max_length=50)
references = models.CharField(null=True, blank=True, max_length=50)
status = models.CharField(null=True, blank=True, max_length=10, choices=STATUS)
create_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
Yapılan tablonun oluşması için TERMİNAL e geçip sırayla makemigrations ve migrate komutları uygulanır veritabanı oluşturulmuş olur. (bu işlemlerin uygulanışını diğer yazılarda bulabilirsiniz.)
2. Tanımlanan modelimizin admin olarak görebilmek için admin.py dosyasına ilgili kodların-tanımların eklenmesi gerekir.
homeapp-admin.py dosyası içine :
from django.contrib import admin
# Register your models here.
from home.models import SettingA
admin.site.register(SettingA)
RUNSERVER yapıp sitenizde admin paneline geçiş yapıp settingA(ayarlar) kısmının adminde görünür olduğunu görebilir ve ayarlarını ekleyebilirsiniz.( runserver ın nasıl yapıldığını diğer yazılarda ayrıntılı bahsetmiştik)
3. homeapp-views.py dosyasında bu ayarları context ile çağıralım. Bunun için aşağıdaki kodlar eklendi.
homeapp-views.py
from django.shortcuts import render
from django.http import HttpResponse
from home.models import SettingA
# Create your views here.
def index(request):
setting_a = SettingA.objects.get(pk=1)
context = {'setting_a': setting_a}
return render(request, 'index.html', context)
4. modeli-admin ve view işlemlerini tamamladık. Şimdi sıra geldi bu kodlamalardan sonra girilen ayarların kullanıcıya görünür hale gelmesine. Aslında veritabanına admin panel sayesinde girilen ayarların web sayfanızda görünmesini istediğiniz değişikliklerin yapılmasına sıra geldi. Şimdi ayarlar-setting isimli modelin bazı değişkenlerini index.html isimli sayfamızda yansımasını görmeye sıra geldi. (örneğin veritabanından var olan title değişkenine ait bilginin web sayfamızda görünür hale gelmesi işlemi yapacağız.)
homeapps-templates altındaki index.html dosyasının içine:
*Aşağıdaki kodda çift süslü parantez {{ setting_a.title }}komutu sayesinde, veritabanında ayarlar ile ilgili tablonun title bilgisi çağırılmış oldu. (yani bir web sayfasındaki title a ait bilgiyi göstermiş olduk.)
*Yine aşağıdaki kodda sitenizin başlık çubuğunuzda görünen ikon eklenmesini işini apmış olduk.
{% extends "base.html" %}
{% block title %} {{ setting_a.title }} {% endblock %}
{% block keywords %} {{ setting_a.keywords }} {% endblock %} %}
{% block descriptions %} {{ setting_a.description }} {% endblock %} %}
{% block head %}
<link rel="shortcut icon" type="image/xcon" href='{{ setting_a.icon.url }}'>
{% endblock %}
{% block slider %}
{% include "slider.html" %}
{% endblock %}
{% block content %}
{% include "content.html" %}
{% endblock %}
0 Yorumlar