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.

--

--

python programlama

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store