Paste
Pasted as Python by zum ( 15 years ago )
Merhaba arkadaşlar , öncelikle yeni, güzel bir django dökümanı ile karşınıza geleyim :)
Bi ton döküman mevcut.Bazıları abuk subuk, bazıları güzel ama açıklaması yok.Bazılarıda yenilere göre değil.Ehh bende kolları sıvadım.Hem öğreniyorum, hem döküman yazıyorum.
Şimdi pardus 2011'deyim.Python(2.7.1 hazır olaraktan var), django, mysqldb (python için) sqlitepy (idi sanırım sqlite'ın python için olanı) yüklendi.Kwrite ile yazıyorum.Şimdi ;
alt+f2'ye basıp konsole yazarak konsol'u açıyoruz.(evet alt+f2 ve konsol ile bol bol uğraşıcaz, windowsu bilmem ellemem).Kullanıcı adım ayro.bu yüzden şu komutları veriyorum, ayro yerine kendi kullanıcı adınızı yazın;
cd /home/ayro
mkdir django
cd django
django-admin.py startproject tbt
daha sonra dolphin ile tbt'ye girin.şimdi ister sağ tıklayıp views.py oluşturun isterseniz konsoldan (cd tbt ile klasöre girip) touch views.py deyin.
Şimdi merhaba dünya yazdıralım :) açın view.py'yi ... views.py dediğimiz bir anlamda index.php|asp gibi birşey.ana dosya.Açalım views.py'yi.Şunları girelim ;
biliyorsuuz python'da # yorum dur;
# -*- coding: utf-8 -*- # utf8 için kodlama
from django.http import HttpResponse
def selam(request): #selam fonksiyonu yapıyoruz.request olmalı.Başka dosyadan çağırım.
return HttpResponse('merhaba dünya') #burada httpresponse diye çağrıya 'merhaba dünya' diye cevaplıyacağız.
Gelelim urls.py'ye;
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import * #url dosyaları
from tbt.views import selam # buradaki views .py dosyasıdır.Python'da modül ekleme komutudur.Selam fonksiyonunu ekliyoruz.* yazarsak komple herşeyi ekleriz
urlpatterns = patterns('', #burda bir tane '', var
(r'^selam/$', selam), # burda r regexp.'' arasındakiler site/link/, (^) başlangıç, $ bitiş, selam da fonksiyon
)
daha sonra, tbt içindeyken shift+f4 ile konsola geçelim (bulunduğumuz klasördeyiz.Önce manage.py'ye çalıştırma izni verelim , sonra server'ı çalıştıralım.
chmod +x manage.py
./manage.py runserver
bir kez chmox +x veriyoruz.Eğer onu yapmazsak sürekli olarak;
python manage.py runserver
dememiz gerekir.Bu yüzden çalıştırma izni veriyoruz.
http://localhost:8000/selam/
tataaamm merhaba dünya :D
----
Şimdi bir iki değişiklik yapalım (urls.py);
from tbt.views import selam
yerine
from tbt.views import *
yazalım.patternlerde ise (desenlerde);
urlpatterns = patterns('',
(r'^selam/$', selam),
(r'^naber/$', hoyt), # gördüğünüz gibi site/naber/ yazdığımızda hoyt'a eklettirebiliriz
)
views.py'de ise şöyle değiştirelim;
def selam(request):
return HttpResponse('merhaba dünya<br><a >hoyt\'a git</a>') # \ kaçış karakteridir \" yapmazsak çalışmaz.
def hoyt(request):
otusken = 'Afferim geldin buraya.<br>şimdi <a >geri</a> git'
return HttpResponse(otusken)
Tataaam ;) kaptınız mevzuyu.Son kodları veriyorum
#urls.py
--
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
from tbt.views import *
urlpatterns = patterns('',
(r'^selam/$', selam),
(r'^naber/$', hoyt),
)
--
#views.py
--
# -*- coding: utf-8 -*-
from django.http import HttpResponse
def selam(request):
return HttpResponse('merhaba dünya<br><a >hoyt\'a git</a>')
def hoyt(request):
otusken = 'Afferim geldin buraya.<br>şimdi <a >geri</a> git' #degisken atayıp onu yazdırabiliriz
return HttpResponse(otusken)
--
########################################################################
BİTTİ Mİ?
Hayır.Şimdi bide html dosyadan çekelim.Bir kaç yolu var.Dosyadan çekip bastırabiliriz fopen vs.. deyip daha sonra Template ile render vs.. yapabilriz.Fakat kötü bir yol..Direkt olarak ayar dosyasından template'i ayarlayıp html dosyalarını göreceğiz.Şimdi tbt adresimiz nerde ?
/home/ayro/django/tbt/
Buraya dos adında dizin oluşturalım.Yani;
/home/ayro/django/tbt/dos
settings.py kısmına şunları yapıcaz ;
TEMPLATE_DIRS = (
'/home/ayro/django/tbt/dos/',
)
Zaten boşta durması gerekir, sadece onu değiştirip ekliyoruz.dos dizini içine test.htm açıp, içine napan ? yazıp kapatalım.
Tamam ? Tamam.Gelin urls.py'ye ;
Üstte yazdığımız dökümanı editleyerek gidiyoruz.;
Şöyle bir pattern ekleyin;
(r'^goster/$', goster),
Şimdi views.py'ye geliyoruz.Birazcık değişiklik yapıcaz , Öncelikle hoyt fonksiyonumuzu değiştirelim.Tabi bir kaç değişiklik, ekleme, düzenleme olacak.Dosyann son halini açıklamarla birlikte veriyorum ;
# views.py
--
# -*- coding: utf-8 -*-
from django.template.loader import get_template #template.loader dediğimiz template yüke :) ten get_template çekiyoruz
from django.template import Context # yine template ten Context çekiyoruz ki bu zaten mevzuyu yürüyütor
from django.http import HttpResponse
def selam(request):
return HttpResponse('merhaba dünya<br><a >hoyt\'a git</a>')
def hoyt(request):
otusken = 'Afferim geldin buraya.<br>şimdi <a >html göster</a>' #site/goster/ e gidiyoruz (url den ayarlamıştık)
return HttpResponse(otusken)
def goster(request):
cek = get_template('test.htm') #cek değişkenine dosyayı aktarıyoruz.
return HttpResponse(cek.render(Context())) #burda da html şeklinde düzenletip bastırıyoruz.
--
#urls.py
--
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
from tbt.views import *
urlpatterns = patterns('',
(r'^selam/$', selam),
(r'^naber/$', hoyt),
(r'^goster/$', goster),
)
--
#settings.py
--
# -*- coding: utf-8 -*-
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
TIME_ZONE = 'Europe/Istanbul'
LANGUAGE_CODE = 'tr'
SITE_ID = 1
USE_I18N = True
USE_L10N = True
MEDIA_ROOT = ''
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/'
SECRET_KEY = 'x-rehxcj5r28v9#p$wdv_g8+vbdl&suv;&gc7;=)cs$b(4$k3i#)'
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.csrf.middleware.CsrfMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'tbt.urls'
TEMPLATE_DIRS = (
'/home/ayro/django/tbt/dos/',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
)
--
############################
Bitti mi ? aaa
Bitmedi lann devam.Şimdi html'de içine python değişkeni yazıp değiştirip atraksiyon yapabiliyoruz.İfler şunlar bunlar.
Gerekli döküman pardus-e derginin 16. sayısında mevcut.Fakat bir örnek verelim ;
İŞletim sistemini alıp, ekrana bastıralım.
# test.htm sayfasını biraz değiştirelim;
--
<title>Vay mq</title>
<style>
body {background:#f4f4f4}
</style>
<br /><br /><br />
<div style="width:80%;margin:0 auto;border:1px solid #900;background:#fff;padding:5px;">
<b>Zenci dostum</b> işletim sistemin mi ne ? Tamam söylüyorum sana<br>
İşletim sistemin: <font color=blue> {{isletim_sistemi}}</font>
</div>
--
Gördüğünüz gibi burda {{isletim_sistemi}} gibi bir ibare var.Pardus e-dergi'de daha net göreceksiniz.İf, else, while, for vs.. gibi bir ton şeyi {{}} içinde kullanabiliyoruz.Neysem ;
views.py'ye import os diyeceğiz.os hazır bir kütüphanedir.Şimdi işletim sistemini ekrana bastıralım;
def goster(request):
nedir = os.name
cek = get_template('test.htm')
return HttpResponse(cek.render(Context({'isletim_sistemi':nedir})))
Sen bizle dalga mı geçiyorsun, posix, mac yada nt falan çıktı diye atraksiyona girmeyin, durun ! kızmayın.Bunlar normal.Şimdi if, else kullanarak tam olarak birşeyler yazdıralım :)
def goster(request):
if os.name == 'posix':
nedir = 'Afferim Linux güzel bir tercih'
elif os.name == 'mac':
nedir = 'Ehh oda iyi be..Ama mac\'in şirket felsefesi microsofttan berbat'
else:
nedir = 'Nasıl yani ? python sever bir adam'
cek = get_template('test.htm')
return HttpResponse(cek.render(Context({'isletim_sistemi':nedir})))
Dırım dırım dırı dırı dırı dırı...Olduuu
şimdi bir iki trick;
import os diyeceğimize, madem sadece name 'i kullanacağız ;
from os import name
diyelim.Daha sonra ;
os.name olarak kullandıklarımızı sadece name olarak kullanalım.
Bitti miii ???? Bittiii lannn !!! O zaman dosyalar;
#urls.py
--
# -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
from tbt.views import *
urlpatterns = patterns('',
(r'^selam/$', selam),
(r'^naber/$', hoyt),
(r'^goster/$', goster),
)
--
#views.py
--
# -*- coding: utf-8 -*-
from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
from os import name
def selam(request):
return HttpResponse('merhaba dünya<br><a >hoyt\'a git</a>')
def hoyt(request):
otusken = 'Afferim geldin buraya.<br>şimdi <a >html göster</a>'
return HttpResponse(otusken)
def goster(request):
if name == 'posix':
nedir = 'Afferim Linux güzel bir tercih'
elif name == 'mac':
nedir = 'Ehh oda iyi be..Ama mac\'in şirket felsefesi microsofttan berbat'
else:
nedir = 'Nasıl yani ? python sever bir adam'
cek = get_template('test.htm')
return HttpResponse(cek.render(Context({'isletim_sistemi':nedir})))
--
#settings.py
--
# Django settings for tbt project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'Europe/Istanbul'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'tr'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = ''
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/media/'
# Make this unique, and don't share it with anybody.
SECRET_KEY = 'x-rehxcj5r28v9#p$wdv_g8+vbdl&suv;&gc7;=)cs$b(4$k3i#)'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.csrf.middleware.CsrfMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'tbt.urls'
TEMPLATE_DIRS = (
'/home/ayro/django/tbt/dos/',
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
--
#dos/test.htm
--
<title>Vay mq</title>
<style>
body {background:#f4f4f4}
</style>
<br /><br /><br />
<div style="width:80%;margin:0 auto;border:1px solid #900;background:#fff;padding:5px;">
<b>Zenci dostum</b> işletim sistemin mi ne ? Tamam söylüyorum sana<br>
İşletim sistemin: <font color=blue> {{isletim_sistemi}}</font>
</div>
--
###################
Mutlu son 'mu bilmem ama son işte.pardus e-dergi'yi 14. sayıdan itibaren takip edip; isthiza'daki python dosyalarınıda hallederseniz herşey kontrol altında olur.
Django ve python iyidir güzeldir, linux mükemmeldir.Windows, .net kakadır.Dokanmayın.
Başka dökümanlara devam edicem.Sizler için yazdığım bir dökümandı . Umud ediyorum ki sıkılmamışsınızdır.
Revise this Paste