Python'da web geliştirme uygulaması Django'yu kurmak için aşağıdaki komutlar kullanılabilir.
Python Pip ile:
pip install django
Anaconda ile:
conda install -c anaconda django
kurlum yapıldıktan sonra ilk olarak bir proje oluşturulur.
django-admin startproject PythonWebOne
Böylece PythonWebOne isimli bir proje oluşturmuş olduk. Proje komutu çalıştırdığınız dizinde oluşur ve dizinde aşağıdaki dosyalar bulunur.
PythonWebOne
├─PythonWebOne
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
Tüm ayarlar settings.py dosyası içinden yapılır. Bu dosyada bazı ayarları değiştirelim.
TIME_ZONE = 'Europe/Istanbul'
Django, kimlik doğrulama ve oturum yöneticisi uygulamaları gibi önceden yüklenmiş bazı varsayılan uygulamalarla birlikte gelir. Oluşturacağımız uygulamalar veya ihtiyacımız olacak üçüncü taraf uygulamaları Installed Apps bölümünde varsayılan uygulamalar yüklendikten sonra listenin altına eklenir.
# /settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Şimdi proje için bir uygulama oluştrumaya çalışalım. Proje klasörüne girip aşağıdaki komutu çalıştırın.
python manage.py startapp OneWeb
OneWeb isimli bir klasör oluşacaktır. Dizin yapısı aşağıdaki gibi olur.
PythonWebOne
├── PythonWebOne
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── OneWeb
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── manage.py
Django'nun yeni uygulamamızı tanımasını sağlamak için, uygulama adını dosyamızdaki Installed Apps listesine eklememiz gerekir. Bu liste settings.py dosyasının içindedir.
# /settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'OneWeb'
]
Bu yapıldıktan sonra, sunucumuzu çalıştıralım ve neyin çıktı alacağını görelim. Django'nun, geliştirme sırasında yararlı olsa da, asla servis vermek için kullanılmaması gereken yerleşik bir web sunucusu ile geldiğini belirtmeliyiz. Sunucuyu aşağıdaki gibi çalıştırın:
python manage.py runserver
Komutu yazdıktan sonra aşağıdaki gibi bir mesaj çıkacaktır.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
January xxxxxxx
Django version 2.2.5, using settings 'PythonWebOne.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Dikkatli bakarsanız, uygulanmadığınız taşıma işleminiz olduğuna dair bir uyarı görürsünüz. Şimdilik bunu görmezden gelin. Tarayıcınıza gidin http://127.0.0.1:8000/ adresine girin. Her şey yolunda giderse, Django karşılama sayfasını görmelisiniz.
Taşıma ile ilgili hatayı görmemek için aşağıdaki komutu kullanabiliriz.
python manage.py migrate
Aşağıdaki gibi bir çıktı görmelisiniz.
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
Tekrar çalıştırdığınızda çıktı aşağıdaki gibi olur hata görmezsiniz
python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
January xxxx
Django version 2.2.5, using settings 'PythonWebOne.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Sunucuyu çalıştırdığımızda, varsayılan Django sayfası gösterildi. Kendi uygulamanız için Django'ya ana sayfa şablonunu nerede arayacağını söyleyecek bir URL tanımlamamız gerekiyor. PythonWebOne klasörü içindeki urls.py isimli dosyayı açın . Böyle görünmeli.
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
Haydi uygulamamız için kendi url linkimizi ekleyelim. Dosyayı bu şekilde görünecek şekilde düzenleyin.
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('OneWeb.urls')),
]
Uygulama klasörünün içine urls.py adlı bir dosya oluşturun ve aşağıdaki kodları dosya içerisine yazın.
from django.conf.urls import url
from OneWeb import views
urlpatterns = [
url(r'^$', views.HomePageView.as_view()),
]
Uygulama altındaki views.py dosyasına bu kodu yazın.
from django.shortcuts import render
from django.views.generic import TemplateView
# Create your views here.
class HomePageView(TemplateView):
def get(self, request, **kwargs):
return render(request, 'index.html', context=None)
Bir klasör oluşturarak içine index.html dosyasını koyalım. Klasör adı templates olabilir.