Python-django ile web sayfası yapmak-1
Merhabalar, python django modülü ile bu yazı dizimizde sıfırdan web sayfası yapacağız. Bu işlemleri yapabilmek için bilgisayarımızda anaconda ve visual studio code(vsc) proramlarının kurulu olması gerekmektedir. Şimdi maddeler halinde başlayalım.
1-cmd komut istemini yönetici olarak çalıştırın
2- komut satırına
pip install virtualenv
komutunu verin
3- D klasörü içinde web adlı bir klasör açın
4- şimdi cmd içinde d: yazarak dizin değiştirin ve cd web yazarak oluşturulan web klasörü içine gelelim. Burada
virtualenv webortam
komutunu yazalım.
5-şimdi bunu aktifleştirmemiz gerekiyor. Bunu yapabilmek için webortam klasörü içindeki scripts klasörü ve onun içindeki activate adlı bat dosyasını çalıştırmak gerekiyor. Bunu yapabilmek için bulunduğumuz
webortamı
dizini içinde iken
cd scripts
sonra
activate
komutunu yazıyoruz.
6-Sonra tekrar
cd..
yazarak yani bir geri dizin olan webortamı dizinine ve tekrar
cd..
yazarak web dizinine geri gelelim. web dizininde iken
pip install django
komutunu vererek django kurulumunu yapıyoruz.
7-şimdi de django framework’unu kurmamız gerekiyor. Bunun için yine web dizini içinde iken
pip install djangorestframework
komutunu veriyoruz ve buradan
exit()
komutu vererek çıkalım.
Şimdi Anaconda’yı açalım;
1- anaconda programı içinde
create>Django
isminde bir dosya oluşturalım.
2-Oluşan Django kelimesinin yanındaki
ok’a basıp>open terminal
diyerek anaconda’ya ait cmd içine girmiş oluyoruz.
3-burada ;
pip install django
yazıyoruz.
4-Bu kurulum bitince;
pip install djangorestframework
yazarak framework kurmuş oluyoruz.
4-Şimdi ise dizin değiştirerek d içinde oluşturduğumuz web dosyasının içine girelim. burada
md webprojesi
yazarak webprojesi adında bir klasör oluşturalım. dir komutunu verirsek bundan önce oluşturduğumuz webortamı klasörünün yanında şu anda oluşturduğumuz webprojesi klasörlerini görebiliriz.
5-cd webprojesi komutu ile webprojesi dosyasının içine girelim
6- şimdi webprojesi kalsörünün içindeyiz bu klasör içinde
7- django-admin startproject websitesi .
(yukardaki komutda . işaretini koymayı unutmayın)
8-komutunu vererek webprojesi klasörü içinde websitesi klasörü ve manage.py dosyasının oluştuğunu görebiliriz.
9-şu an için internet sitesi yerine manage.py dosyası ile işlemlerimizi yapacağız.
10-şimdi ise
python manage.py runserver
komutunu çalıştıralım.
11-Bu komutu çalıştırdığımızda manage.py dosyası bizim için hhtp//127.0.0.1/8000 portunda bir sayfa oluşturacaktır. Bu adres, bilgisayarlar arasında farklılık gösterebilir. cmd ekranında bu adres gözükecektir. cmd ekranındaki adresi kopyaladıktan sonra adres çubuğuna yapıştıralım, bizi django sayfası karşılayacaktır.
12-Bilgisayarlar web ortamı geliştirilmesi için bize 80 nolu portu açarlar. django ise normal koşullarda 8000 nolu portu kullanır. Eğer 8000 nolu portu eğer biz başka işlerimiz için kullanıyorsak django’ya başka portu da yönlendirebiliriz. örneğin 8000 yerine 8500 portunda çalış dersek;
python manage.py runserver 127.0.0.1:8500
komutunu vererek de djangoya artık sen 8500 portun da çalış diyebiliriz.
13-python manage.py runserver
komutundan çıkmak için
ctrl+c
komutu ile çıkabiliriz.
Artık bir web projesi geliştirmeye daha doğrusu web sitesi için ortam değişkenlerini oluşturmaya başlayabiliriz. Bunun için bilgisayarınızda 3 pencerenin açık olmasını tavsiye ederim. Bunlar django’nun open terminal ile çalıştırdığımız ve d dizini içinde D:\webprojesi> şeklinde hazır olması, ikincisi ise visual studio code(vsc) programını çalıştıralım. file>open folder> diyerek >webprojesi ‘ni seçelim. Üçüncü olarak ise bir tarayıcı açalım.
django terminalden
python manage.py runserver
komutu ile sayfamızı çalıştıralım. (terminalde çıkan adresi tarayıcımıza yazarsak sayfa çalışır) VSC içinde ise settings.py dosyasının içine girelim.
settings.py dosyasının içeriği:
Bu dosya içinde bazı değişiklikler yapacağız. şimdi dosya içindekileri sırası ile inceleyelim. Değiştirilecek kısımları siyah olarak belirttim. settings.py dosyası içinde bazı anlatmadığım kısımları ilerleyen bölümlerde yeri geldiği zaman daha ayrıntılı olarak anlatacağım için bazı kısımları atlayacağım anlatırken…
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
bulunduğumuz dizini gösterir. Örneğin bunun sağlamasını ise settings.py üzerinde sağ tıklayalım ve açılan menüden copy Relative Path seçeneğini seçtikten sonra BASE_DIR altına kopyalarsak
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
websitesi\settings.py
Burada aslında denilmek istenen settings.py dosyası websitesi içindedir anlamındadır.
geldiğini görürüz. Biz şu an için websitesi\settings.py kısmını tekrar silelim.
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Burada bize anlatılmak istenen settings.py dosyası baz dizin olmak üzere bu dosya oluşturduğumuz webprojesi dosyasının altında websitesi kalsörü içinde demektir. Bilindiği üzere pythonda os.path komutu dosya klasör ve dizinlerini göstermek içim kullanılır. Bilgi tazelemek isteyenler https://python-istihza.yazbel.com/standart_moduller/os.html adresinden os.path modülünün ne işe yaradığına bakabilirler.
SECRET_KEY = ‘@-ajr3+dk!f)f1yy)ahfg#=4e*tdne#18@%0(yxs*19+18yibj^’
SECRET_KEY : . biz sistemi kurduğumuzda karşı tarafdaki bilgisayarlar ile şifreli bir şekilde haberleşiriz. Bir sitenin başka bir site ile haberleşmesi bu şifreli anahtarlama ile olur.
DEBUG = True Bu kısımdaki True , projenin en sonunda yani siteyi faaliyete açınca False yapılacaktır. Şimdilik True olarak kalsın.
ALLOWED_HOSTS = []
Bizim izin verdiğimiz adresler üzerinden yayın yapılacağı anlamına gelir . bu kısmı
ALLOWED_HOSTS = [“127.0.0.1”]
şeklinde değiştiriyoruz.
ROOT_URLCONF = ‘websitesi.urls’
bizim kök diznimizin websitesi kalsörü altındaki urls.py dosyasının içinde olduğunu gösteririr. Bir sonraki kısımda ayrıntılı olarak anlatılacaktır.
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.sqlite3’,
‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
}
}
Bu kısımda ise django bizim için sqlite3 veri tabanını kullandığını bize göstermektedir. DATABASES yazan hemen üstünde bize gösterdiği adres https://docs.djangoproject.com/en/3.0/ref/settings/#databases içinde ise; eğer istersek başka database’ler kullanırsak bu database’lere ait kalıpları da bu adresde bulabiliriz.
AUTH_PASSWORD_VALIDATORS = [
{
‘NAME’: ‘django.contrib.auth.password_validation.UserAttributeSimilarityValidator’,
},
{
‘NAME’: ‘django.contrib.auth.password_validation.MinimumLengthValidator’,
},
{
‘NAME’: ‘django.contrib.auth.password_validation.CommonPasswordValidator’,
},
{
‘NAME’: ‘django.contrib.auth.password_validation.NumericPasswordValidator’,
},
]
AUTH_PASSWORD_VALIDATORS kısmı ise bir internet sitesi kurduğumuzda şifrelerin büyük-küçük harf , en az 8 karekter , numeric gibi şifre verme işlemini bizim yerimize kurduğunu anlatmaktadır. Şifre kısımlarında istemediğimiz bir kısmı silebiliriz.
LANGUAGE_CODE = ‘en-us’
TIME_ZONE = ‘UTC’
USE_I18N = True
USE_L10N = True
USE_TZ = True
Bu kısımda
LANGUAGE_CODE = ‘tr’
TIME_ZONE = ‘Europe/Istanbul’
olarak değiştiriyoruz. Bu değişiklikleri yaptığımızda 127.0.0.1:8000 adresindeki sayfanın Türkçe olduğunu görebiliriz.
settings.py dosyasının içindekileri kısaca inceledik ve bu dosya içindeki düzenlemeler yukarda siyah olarak gösterilmiştir.
manage.py dosyası
Bu dosya ile alakalı olarak önce süper kullanıcı oluşturmamız gerekiyor.
Süper kullanıcı oluşturma
Django terminal de webprojesi klasörü içinde iken önce
python manage.py migrate
komutunu veriyoruz daha sonra ise
python manage.py createsuperuser
komutunu veriyoruz
Bizden kullanıcı adı isteyecektir . kullanıcı adı olarak: admin yazıyoruz. daha sonra bir mail adresi isteyecek burayı örneğin aa@gmail.com yazın sonra ise şifre isteyecek buraya 123456 yazın daha sonra şifreyi tekrarla sorusuna 123456 yazın. bu şifrenin settings.py password kısmında gördüğümüz üzere şifre politikasına aykırı olduğu uyarısı gelecek biz yinede y tuşuna basalım. Bu şekilde oluşturduktan sonra komut satırına tekrar:
python manage.py runserver
yazıyoruz. http://127.0.0.1:8000/ adresine gidiyoruz ve burada
http://127.0.0.1:8000/admin ekliyoruz. Karşımıza admin penceresinin geldiği gözükür. Az önce kullanıcı adı yerine admin şifre kısmına ise 123456 yazarak giriş yapıyoruz.
urls.py dosyası
django’da url’ler bizim web sitemize gelen istekleri yönlendirmemiz için ve view ile ilişkiyi sağlamak için kullanılır. url, basit anlamda bir web adresidir.Nasıl ki http://www.google.com bir web adresi ise http://127.0.0.1:8000 adresi de bir web adresidir yani bir url’dir.
ileride ayrıntılı olarak göreceğimiz urls.py dosyası içinde
urlpatterns = [
path(‘admin/’, admin.site.urls),
]
kısmı görülür. bir önceki bölümde createsuperuser ile admin kısmını yapmış ve http://127.0.0.1:8000/admin/ ile giriş yapmıştık. Şu an için urls.py dosyası bize path olarak admin kısmında olduğumuzu gösterir.
ilk uygulamamızı yapalım
1-ilk uygulamamızı manage.py dosyasını kullanarak yapacağız. django terminal de webprojesi içinde iken;
python manage.py startapp anketler
komutunu verince webprojesi kalsörü içinde anketler adında bir klasör daha oluştuğunu görebiliriz.
Burada önemli olarak şunu diyebiliriz. Daha önce websitesi içindeki urls.py dosyasındaki path yolunu izah etmiştim. urls.py dosyası anketler klasörü içindeki views.py ve models.py dosyaları ile ilişki içinde olacak.
2-Şimdi VSC programında anketler klasörü içinde views.py dosyasını açalım. burada sadece
from django.shortcuts import render
yazmaktadır. Bundan sonra amacımız bizim sitemize başka siteden gelecek isteğe(request) bizde (response) ile karşılık vereceğiz. Bunun için şimdilik bu kod satırına aşağıdaki kod satırlarını eklediğimizde anketler>views.py dosyası bu duruma gelecek. (return kısmındaki kod satırı 1 tab daha ileri almayı unutmayın)
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse(“merhaba hoşgeldiniz”)
3-VSC programında anketler klasörü içinde
urls.py
dosyasını oluşturalım. Bu dosya içinde:
from django.urls import path
from . import views
urlpatterns = [
path(‘ ’, views.index, name=’index’),
]
4-şimdi ise websitesi içindeki urls.py dosyasını açıyoruz ve içine ;
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘anketler/’, include(‘anketler.urls’)),
]
kodunu yapıştırıyoruz.
5-şimdi web sayfamızı wepprojesi dizini içinde iken
python manage.py run server
komutu ile çalıştırıyoruz. Tarama yerine
http://127.0.0.1:8000/anketler/
yazdığımız zaman karşımızda
merhaba dünya
yazacaktır.