8. Python-Django ile e-Ticaret Sitesi yapımı- Hakkımızda-İletişim-Referans gibi sayfaların oluşturulması:

 Bu yazıda genel web sayfalarının barındırdığı sayfaları(genelde metin ağırlıklı olan sayfalar hakkında, iletişim, referans gibi) oluşturulması aşamalarını göreceğiz. 

Bu örnekte bir eticaret sitesinin hakkında sayfasının ckeditör yardımıyla önceki yazılarımızda admin tarafında doldurulmasını anlatmıştık. Önceki yazılarımızda yani 6.adımda genel ayarları planlamıştık ve bu ayarların yapıldığı modelimizde about_us, references, contact isimli değişkenlerimizin tıpkı 7.adımdaki yazıda productt_urun app de  admin tarafında ckeditor kullanmıştık-şimdi ise home app de genel ayarlarda bulunan (about_us, references, contact )  veritiplerini yine ckeditor yardımıyla daha zengin metin girişleri yapıp bu verinin oluşturacağımız hakkımızda sayfası çağırılması-kullanılmasının aşamalarını göreceğiz.

(özetle ckeditorü özelliğini product_urun-model.py kullanmıştık şimdide home app-model.py de kullanımını göreceğiz. )

Bu işlemler için aşağıdaki adımları izleyin.

1. home app-model.py içine aşağıdaki kodları ekleyin:

Modelimizde zaten genel ayarlar(SettingA) vardı. Sadece yeni eklenen kodları görüyorsunuz. ckeditor değişken tipi olan  RichTextUploadingField tipinin about_us,references ve contact isimli değişkenlerde kullanıldığına dikkat edin.)

...
from ckeditor_uploader.fields import RichTextUploadingField



# Create your models here.

class SettingA(models.Model):
.....

.....

about_us = RichTextUploadingField(null=True, blank=True, )
about_us = models.CharField(null=True, blank=True, max_length=200 )
references = RichTextUploadingField(
null=True, blank=True, )
contact = RichTextUploadingField(
null=True, blank=True, )
....


def __str__(self):
return self.title



işlem tamam. admin giriş yapıp genel ayarları doldurun. Doldurma sırasında karşınıza ckeditor sayesinde about-contact ve references ile ilgili kısımların  zengin metin geliştirme ortamı gelmiş olması gerekir.(yani resim ekleme-yazıların biçimlendirme , madde işaretleri gibi özellikleri kolayca yapılabilmeyi sağlar.)

2. İndirdiğimiz örnek tasarımdaki sayfalardan contactus.html dosyasını hakkımızda.html sayfası olarak planlayabilirsiniz. Bu sayfada yapacağımız işlemler aşağıdaki gibidir.

a. öncelikle hakkimizda.html adında boş bir html dosyası oluşturalım ve içine aşağıdaki gibi django frameworkün kodları ile contact_us sayfasından alacağımız html tag lerle birlikte hakkimizda.html dosyamızı oluşturuyoruz.

{% extends "base.html" %}

{% block title %} Hakkımızda {{ 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 content %}
<div id="contact-page" class="container">
<div class="bg">
<div class="row">
<div class="col-sm-12">
<h2 class="title text-center"> <strong>HAKKIMIZDA</strong></h2>

<div id="gmap" class="contact-map">

{{ setting_a.about_us }}



</div>

</div>
</div>
</div>
</div><!--/#contact-page-->


{% endblock %}


b. homeapp-models.py içinde son durum:

Django da model demek veritabanını yapılandırmak demektir. Aşağıdaki modelimizdeki bazı değişkenleri görüyorsunuz. Bunlar SettingA isimli modelimizdeki değişkenler. Biz bu verilerin içindeki bilgileri örneğin aşağıdaki kodda geçen  about_us isimli değişkenin içeriğini hakkimizda.html sayfasında kullanmak çağırmak istiyoruz. 

not1:!!!Yukarıdaki a maddesindeki kodlarda geçen  {{ setting_a.about_us }} ifadesi aslında tam da bu işi yapıyor.!!!!


from django.db import models
from ckeditor_uploader.fields import RichTextUploadingField
class SettingA(models.Model):
STATUS = (('True', 'Evet'), ('False', 'Hayır'))
title = models.CharField(max_length=30)
....
#about_us = RichTextUploadingField(null=True, blank=True, )
about_us = models.CharField(null=True, blank=True, max_length=200 )
references = RichTextUploadingField(null=True, blank=True, )
contact = RichTextUploadingField(null=True, blank=True, )
...

def __str__(self):
return self.title

not2: Yukarıdaki kodda ikinci satırda geçen kod bu modelde ckeditörün kullanılması için eklenmiş olan satırdır. Zengin metin içerikleri için bu import işlemini yapmayı unutmayın.

Bu noktada veri tipi değişikliği veya ekleme yaptıysanız TERMİNALE geçip migrations-makemigrations işlemlerini yapmayı unutmayın. 

c. homeapp-urls.py içine hakkımızda url i tanımlaması:

from django.urls import path

from . import views

urlpatterns = [
path('', views.index, name='index'),
path('hakkinda/', views.hakkimizda, name="hakkindadur"),


]

d. homeapp-views.py nin hazırlanması:

(Aşağıdaki kodda index sayfası için index fonksiyonu zaten vardı buna ek olarak yeni sayfamızın içeriğini çağırmayı sağlayan hakkimizda fonk. aşağıda tanımlanmıştır.)

def index(request):
setting_a = SettingA.objects.get(pk=1)
context = {'setting_a': setting_a}
return render(request, 'home/index.html', context)


def hakkimizda(request):
setting_a = SettingA.objects.get(pk=1)
context = {'setting_a': setting_a}
return render(request, 'home/hakkimizda.html', context)
















Yorum Gönder

0 Yorumlar