Django
Django
Teekkrler:
ahin MERSN
Serhan YILDIZ
Abdurrahman OLA
Umut KARCI
1. Django Nedir? 3
2. rnek Siteler 3
3. Kurulum 5
Pip 6
ndir Kur 7
4. Dzenleme Arac (Editr) 9
5. Proje Oluturma 10
6. Proje Dosyalar 10
7. [Link] de Dil ve Zaman Ayarlar 12
8. lk [Link] Dzenleme 15
9. lk Admin Girii 17
10. collectstatic le Statik Dosyalar Kopyalama 17
11. createsuperuser le Yetkili Kullanc Oluturma 20
12. Ynetim Paneli Deitirme 21
13. Admin Templates Dosyalar Kopyalama 23
14. Admin Html Dosyas Deitir 24
15. Ynetim Paneli Gruplar 27
16. Ynetim Paneli Kullanclar 27
17. lk Uygulama Hazrl 28
18. MTV (Model Template View) rnei 30
19. Uygulama Ad Deitirme 34
20. Ynetim Sayfasnda Kstlamalar (ModelAdmin Filtreler) 36
Django nedir nce ksa bir bilgi verelim. Django; Python kodlaryla
hazrlanm bir web arayzdr. Yani Php ile hazrlanan
Wordpress, OpenCart, NukePHP gibi Django'da Python kodlaryla
gelitirilmi bir aratr diyebiliriz. Tam olarak Trke karl
terimi bulamyoruz ancak ksa srede web siteleri oluturmanz
salar.
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Ksa bir rnek vereyim hemen, HTML5 ile gelen yeni zellikler iin
bile eklemeler yapld. JSONField
Dier birka konuya rnek gerekirse; sk kullanlan birok
komutlarn tek fonksiyonda toplanmas, gvenlik aklar yamalar
ya da veritabanlarnda yaplan deiikliklere eklenti salanmas.
Ubuntu:
sudo apt-get install python-pip
Windows:
python -m pip install -U pip
Mac OS:
sudo easy_install pip
pip kurulumundan sonra pip ile kurulumlara balayabiliriz.
Kullanm rnei:
sudo pip install Django
sudo pip install Django=1.7.7
Mac OS:
sudo pip install django
Windows:
pip install django
[Link]
Linux:
muslu@muslu-MS-7641:~/ndirilenler/Django-1.9.1$
django-admin version
cd ndirilenler/
django-admin version
Alnabilecek hatalar:
[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-
packages/.............
komutun bana sudo eklemeyi unuttunuz ve yetkiniz yok.
olmal.
Windows:
import django
[Link]
exit()
[Link]
Dierleri;
[Link]
[Link]
rnek olarak; teknik servis takibi, salk oca sra takibi, kombin
rn sat sitesi vs..
Proje Oluturma
mkdir django (projelerinizin olaca klasr ad)
cd django (projelerimizin klasr)
django-admin startproject teknikservistakibi (proje oluturuyoruz)
cd teknikservistakibi/
ls -la
projemize ait bir klasr olutu ve iinde [Link] dosyas ve
proje ad ile ayn bir klasr daha oluturuldu.
2 directories, 5 files
ctrl+g
Satr: 107-109
# [Link]
LANGUAGE_CODE = 'tr_TR'
TIME_ZONE = 'Europe/Istanbul'
Terminalde;
./[Link] runserver
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
12
komutu ile Django'nun basit bir http servern altryoruz.
Dier bir hususta; ip adresi alan baka bir cihazdan ( pc, telefon,
tablet vs.. ) projenizi kontrol etmek isterseniz komut satrnzda ip
adresinizi renerek bu ip zerinden yayn yapabilirsiniz.
Bylelikle farkl tarayclarda nasl gzktne bakabilirsiniz.
muslu@muslu-MS-7641:~/django/teknikservistakibi$ ifconfig
rnek:
ALLOWED_HOSTS = ['[Link]', '[Link]', '.[Link]']
'[Link]',
'[Link]',
'[Link]',
'[Link]',
]
# [Link] dosyas
ROOT_URLCONF = '[Link]'
# Html dosyalar iinde gnderilecek veriler, ayarlar vs..
TEMPLATES = [
{
'BACKEND':
'[Link]',
'DIRS': [[Link](BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'[Link].context_processors.debug',
'[Link].context_processors.request',
'[Link].context_processors.auth',
'[Link].context_processors.messages',
],
},
},
]
# Http serverlar iin wsgi dosya ad ve uygulamas
WSGI_APPLICATION = '[Link]'
# Yetkilerde geerli olan ifreleme yntemleri
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'[Link].password_validation.UserAttributeSimilarityValidator',
},
{
'NAME':
'[Link].password_validation.MinimumLengthValidator',
},
# {
# 'NAME':
'[Link].password_validation.CommonPasswordValidator',
# },
# {
# 'NAME':
'[Link].password_validation.NumericPasswordValidator',
# },
]
# Uluslararaslama
# [Link]
LANGUAGE_CODE = 'tr_TR'
TIME_ZONE = 'Europe/Istanbul'
USE_I18N = True
USE_L10N = True
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
16
USE_TZ = True
# Statik dosyalar (CSS, JavaScript, Resimler)
# [Link]
MEDIA_ROOT = BASE_DIR + '/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = BASE_DIR + "/static/"
STATIC_URL = '/static/'
# Gizli kod. leride gerekecek.
SECRET_KEY = '9f5$6e&r&x3*_a%j1ocv*p3aftgkl1y5n&)+^jehhc@&z%@@8p'
Alnacak hata:
INSTALLED_APPS = [
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
'[Link]',
]
mkdir static
mkdir media
yes
ls static/
diyerek ya da proje klasrmzdeki static klasrne bakarak
admin klasrnn oluup olumadn kontrol edebiliriz.
./[Link] createsuperuser
Alnabilecek hatalar:
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
20
This password is too short. It must contain at least 8 characters.
This password is entirely numeric.
ifreniz ok ksa. En az 8 karakter olmas gerekiyor.
[Link]
[Link]
'[Link].context_processors.messages',
],
},
},
]
Windows:
C:\Python27\lib\site-packages\django\contrib\admin\templates\
['/usr/local/lib/python2.7/dist-packages/[Link]/django']
/usr/local/lib/python2.7/dist-packages/Django-1.9.1-
[Link]/django/contrib/admin/templates/admin
cd ~/django/teknikservistakibi/templates
cp -a /usr/local/lib/python2.7/dist-packages/Django-1.9.1-
[Link]/django/contrib/admin/templates/admin/. .
cd /usr/local/lib/python2.7/dist-packages/Django-1.9.1-
[Link]/django/contrib/admin/templates/
cp -a admin/ ~/django/teknikservistakibi/templates/
cd ~/django/teknikservistakibi/templates/
[Link]
[Link] metni zerinde ctrl tuuna basl tutarak fare sol tuu ile
tkladnzda aadaki gibi yollar gsterecektir ve hangisi
tklarsanz o dosyay aacaktr.
Gruplar --> Ekle linki ile grup ekleme sayfasn ayoruz. Grup
adnn altnda ManyToMany ile ekilmi verileri gryoruz. Burada
tm uygulama yetkileri mevcut. Yazacamz uygulamalarda
burada gzkecek.
rnek olarak finans, teknik servis, kargo, sat vs.. gibi gruplar
oluturulup kiilere ekleme, silme ve/veya dzenleme yetkileri
toplu olarak verilebilir.
Kullanc Ekleme:
CommandError: '/home/muslu/django/teknikservistakibi/servisformu'
already exists
Uygulama zaten oluturulmu, farkl bir isim seilmeli.
def __unicode__(self):
### daha nceden __str__ kullanlyordu. Models arldnda burada seilen alan
ve/veya alanlar dndrlr. Birazdan greceiz.
return [Link]
class Meta:
### admin sayfasnda bu uygulamann nasl isimlendirilip arlaca tanmlamalar
verbose_name_plural = u"Teknisyenler"
verbose_name = u"Teknisyen"
class TeknisyenAdmin([Link]):
### Admin sayfasnda gsterilecek detaylar
list_per_page = 20
### sayfadaki kayt adeti, otomatik sayfalama yapacak
exclude = ( 'KayitTarihi', )
### KayitTarihi alann gizliyoruz
[Link](Teknisyen, TeknisyenAdmin)
### Teknisyen ve TeknisyenAdmin snflarn kayt ettiriyoruz.
Terminalde;
[Link]
verbose_name = u"Teknisyen"
Yazdir.short_description = u'Yazdr'
### Fonksiyonun ksa aklamas
Yazdir.allow_tags = True
### Fonksiyonumuz html etiket ieriyor
[Link]
def EkAlanTest(self):
return [Link](' ', '_______')
EkAlanTest.short_description = u'Buras alann bal'
class TeknisyenAdmin([Link]):
Alnabilecek hatalar:
return False
if not [Link].is_superuser:
### kullanc super inek deilse
try:
KayitSayisi = [Link]()
### hi kayt olmadnda hata verecektir.
except:
KayitSayisi = 0
### geerli uygulamadaki obje says, yani toplam kayt says
KalanLimit = 5
### super olmayan kullanclar kayt says en fazla 5 olabilir.
2 kayt girdikten sonra yeni kayt butonu pasif oldu. Eer kayd biri
silinirse tekrar aktif olacak.
rnek stil:
<style>
.object-tools [Link] {
font-size: 22px;
background-color: #ff9900;
}
</style>
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
40
Yine ayn dosya da bulunan sonu saysn yazdrabiliriz.
{% if results %}
<div class="results">
<p>{{ results|length }} adet kayt bulundu!</p>
<table id="result_list">
olarak deitirelim.
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
41
def get_list_display(self, request):
g_l = super(TeknisyenAdmin, self).get_list_display(request)
### list_display listesini g_l adnda bir listeye aktaryoruz.
Try:
## kullanc tekrar sayfay yklediinde silinen alan yeniden silinmeye allacak ve hata
oluacak
if not [Link].is_superuser:
### kullanc super kullanc deilse
g_l.remove('EkAlanTest')
### list_diplay listemizden EkAlanTest alann gizle
except:
### hata olutuunda pas ge
pass
return g_l
### g_l listesi dzenlenmi olarak ya da normal hali ile geri gnderilsin.
[Link]:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from [Link] import AppConfig
class ServisformuConfig(AppConfig):
name = 'servisformu'
verbose_name = u'Servis Formlar'
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
43
__init__.py:
default_app_config = '[Link]'
[Link]
1. Mteri bilgileri
2. rnler (tablet, laptop, otomobil, telefon vss.)
3. rnler ile gelen aksesuarlar (pil, anta vs..)
4. Teknisyen (Mdahale edecek personel)
5. lem durumlar (Hazr, yeni geldi, para bekliyor vs..)
[Link]:
import random, string
class Musteriler ( [Link] ) :
Aktif = [Link](default = 1)
Kodu = [Link] ( u'Mteri Kodu',
default=''.join([Link]([Link]) for x in range(8)), max_length = 8 )
Unvan = [Link] ( u'Ticari nvan', max_length = 250 )
Yetkili = [Link] ( u'Yetkili Ad Soyad', max_length = 250 )
Telefon = [Link] ( u'Telefon', max_length = 13)
KayitTarihi = [Link] ( u"Kayt Tarihi", default=[Link])
def __unicode__(self):
# return [Link] + " " + [Link]
return "Mteri Kodu: %s - Ad: %s" % ([Link], [Link])
class Meta:
verbose_name_plural = u"Mteriler"
verbose_name = u"Mteri"
terminalde
Alnacak hata:
TypeError: 'MediaDefiningClass' object is not iterable
[Link](Musteriler, MusterilerAdmin)
olarak dzeltelim.
./[Link] makemigrations servisformu && ./[Link] migrate && ./[Link] runserver
ve
[Link]
NOT: Kayt dzenleme linki her zaman iin satrn ilk alanndadr.
Burada mteri kodu.
[Link]:
from [Link] import Musteriler
def SecilileriGuncelle(modeladmin, request, queryset):
for k in queryset:
[Link]()
return ""
SecilileriGuncelle.short_description = u"Seilileri Gncelle"
class MusterilerAdmin([Link]):
list_display = ( 'Kodu', 'Unvan', 'Yetkili', 'Aktif')
list_per_page = 80
exclude = ( 'KayitTarihi', )
search_fields = ( 'Yetkili', 'Unvan' )
list_display_links = ('Unvan', 'Yetkili')
actions = (SecilileriGuncelle,)
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
48
actions_on_bottom = True
actions_on_top = True
Alnabilecek hatalar:
2 kayt var.
[Link]:
def __unicode__(self):
return [Link]
yerine
[Link]:
def __unicode__(self):
# return [Link] + " " + [Link]
# return "%s %s" % ([Link], [Link])
return "Mteri Kodu: %s - Ad: %s" % ([Link], [Link])
[Link]:
def SecilileriGuncelle(modeladmin, request, queryset):
for k in queryset:
[Link] = [Link] + "____"
[Link]()
return ""
SecilileriGuncelle.short_description = u"Seilileri Gncelle"
[Link]:
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
51
class MusterilerAdmin([Link]):
..
[Link]:
class Musteriler ( [Link] ) :
..
def AramaYap ( self ) :
if [Link]:
return '<a href="[Link] target="_blank">Numaray Ara</a>' % [Link]
else:
return 'Telefon No kayt edilmedi'
AramaYap.short_description = u'Ara'
AramaYap.allow_tags = True
olarak deitirelim.
[Link]:
def SecilileriGuncelle(modeladmin, request, queryset):
print [Link]
for k in queryset:
[Link] = [Link] + "____"
[Link]()
return ""
SecilileriGuncelle.short_description = u"Seilileri Gncelle"
Alnabilecek hatalar:
'ascii' codec can't decode byte 0xc5 in position 13: ordinal not in
range(128)
[Link]:
class DurumlarAdmin([Link]):
list_display = ('Durumu',)
list_per_page = 80
[Link](Durumlar, DurumlarAdmin)
Terminalde;
./[Link] makemigrations servisformu && ./[Link] migrate && ./[Link] runserver
[Link]:
class Aksesuarlar ([Link] ):
Adi = [Link](u'Adi', max_length=30, help_text='rnle beraber
getirilen tm aksesuarlar. rn: Batarya, anta' )
def __unicode__(self):
return [Link]
class Meta:
verbose_name_plural = u"Aksesuarlar"
verbose_name = u"Aksesuar"
[Link]:
class AksesuarlarAdmin([Link]):
list_display = ('Adi',)
list_per_page = 5
[Link](Aksesuarlar, AksesuarlarAdmin)
[Link]:
class ServisForm ( [Link] ) :
Musteri = [Link] ( Musteriler )
TeslimEden = [Link] ( u'Teslim Eden', max_length = 130 )
TeslimAlan = [Link] ( Teknisyen,
default=int([Link](id=1).id) )
FormNo = [Link] ( u'Form No',
default=''.join([Link]([Link]) for x in range(8)), max_length = 8 )
KayitTarihi = [Link] ( u"Kayt Tarihi", default=[Link])
def __unicode__(self):
return [Link]
class Meta:
verbose_name_plural = u"Formlar"
verbose_name = u"Servis Formu"
def Yazdir ( self ) :
return '<a href="/yazdir/%s" target="_blank">Yazdr</a>' % [Link]
Yazdir.short_description = u'Yazdr'
Yazdir.allow_tags = True
Alnabilecek hatalar:
This query requires pytz, but it isn't installed.
[Link]:
class ServisFormAdmin([Link]):
list_display = ( 'FormNo', 'Musteri', 'TeslimEden', 'TeslimAlan',
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
56
'KayitTarihi', 'Yazdir' )
list_per_page = 50
ordering = ( '-KayitTarihi', )
date_hierarchy = 'KayitTarihi'
search_fields = ( 'FormNo', 'Musteri__Yetkili', 'Musteri__Telefon' )
exclude = ( 'KayitTarihi', )
[Link](ServisForm, ServisFormAdmin)
[Link]:
class ServisFormAdmin([Link]):
list_display = ( 'FormNo', 'Musteri', 'TeslimEden', 'TeslimAlan',
'KayitTarihi', 'Yazdir' )
list_per_page = 50
ordering = ( '-KayitTarihi', )
date_hierarchy = 'KayitTarihi'
search_fields = ( 'FormNo', 'Musteri__Yetkili', 'Musteri__Telefon' )
exclude = ( 'KayitTarihi', )
if db_field.name == 'TeslimAlan':
### field ( alan ) ad TeslimAlan ise
kwargs["queryset"] = [Link](Aktif=True)
### Teknisyenlerin sadece aktif olanlar filtreleyerek getir ve queryset e ekle
### kwargs konusuna imdilik girmiyoruz
olarak deitirelim.
formfield_for_foreignkey fonksiyonu, snfmza ait foreignkey
fieldlarn kullanmamz salar.
[Link]:
..
..
..
class Urunler ( [Link] ) :
ServisFormu = [Link] ( ServisForm )
Cins = [Link] ( u'Cinsi', max_length = 30 )
Marka = [Link] ( u'Marka', max_length = 50 )
Model = [Link] ( u'Model', max_length = 50 )
SeriNo = [Link] ( u'Seri No', max_length = 250 )
GarantiBitis = [Link] ( u"Garanti Biti", default=[Link] )
Sikayet = [Link] ( u'ikayet' )
Aksesuar = [Link] ( Aksesuarlar, blank=True )
Durum = [Link] ( Durumlar )
Not = [Link] ( u'Yaplan lemler', blank=True )
def __unicode__(self):
return "%s %s %s" % ([Link], [Link], [Link])
class Meta:
verbose_name_plural = u"rnler"
verbose_name = u"rn"
[Link]:
..
..
class UrunlerInline([Link]):
model = Urunler
###hangi model
extra = 0
### yeni eklenmek istendiinde ka tane rn ekleme yapsn. lk kaytta hazr olarak rn ekleme
sayfas getirmeyecek biz ekle deyince 1 tane rn ekleme sayfas aacak.
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
59
max_num = 5
### en fazla kayt rn eklenebilir.
class ServisFormAdmin([Link]):
inlines = [ UrunlerInline, ]
list_display = ( 'FormNo', 'Musteri', 'TeslimEden', 'TeslimAlan',
'KayitTarihi', 'Yazdir' )
list_per_page = 50
ordering = ( '-KayitTarihi', )
date_hierarchy = 'KayitTarihi'
search_fields = ( 'FormNo', 'Musteri__Yetkili', 'Musteri__Telefon' )
exclude = ( 'KayitTarihi', )
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'TeslimAlan':
kwargs["queryset"] = [Link](Aktif=True)
if db_field.name == 'Musteri':
kwargs["queryset"] = [Link](Aktif=True)
return super(ServisFormAdmin, self).formfield_for_foreignkey(db_field, request,
**kwargs)
Not:
Tasarmsal olarak daha uygun olduunu StackedInline kullandk.
[Link]
[Link]:
def sayfayiyazdir(request, idsi):
### request art. Olmazsa olmaz. Bu fonksiyona en azndan bir id deeri gerekiyor.
[Link]:
from [Link] import sayfayiyazdir
urlpatterns = [
url(r'^yazdir/([\w\-]+)/$', sayfayiyazdir, name='sayfayiyazdir'),
url(r'^admin/', [Link]),
]
Not:
([\w\-]+) her eyi yazabiliriz. (+id...) kullanabilirdik ama bu daha
ok iinize yarayacak, aklnzda bulunsun.
[Link]:
<!DOCTYPE html>
<html lang="en">
<head>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<meta charset="utf-8">
<title>zmir Teknik Servis, Servis Formu kontrol, durum renme |
[Link]</title>
<meta name="description" content="zmir Teknik Servis, Servis Formu kontrol, durum
renme"/>
<link rel="canonical" href="[Link]
<link href='[Link] rel='stylesheet'
type='text/css'>
<link rel="shortcut icon" href="/media/[Link]">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="[Link]
<script src="[Link]
<script src="[Link]
<style>
.borderless tbody tr td, .borderless tbody tr th, .borderless thead tr th {
border: none;
}
</style>
</head>
<body onload="[Link]()">
<div class="container">
<h1>{{ [Link] }}</h1>
<p>{{ [Link]|title }} ({{ [Link]|title }}) - {{
[Link] }}</p>
<table class="table table-condensed">
<thead>
<tr>
<th>rn</th>
<th>Seri No</th>
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
63
<th>ikayet</th>
<th>Aksesuar</th>
<th>Not</th>
</tr>
</thead>
<tbody>
{% for k in formbilgileri %}
<tr>
<td>{{ [Link]|upper }} | {{ [Link]|upper }} | {{ [Link]|upper }}</td>
<td>{{ [Link]|upper }}</td>
<td>{{ [Link]|title }}</td>
<td>{% for kk in [Link] %}{{ kk|title }} {% endfor %}</td>
<td>{{ [Link] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="container">
<table class="table table-condensed borderless">
<tr>
<th>Servise Teslim Eden</th>
<th>Teknisyen</th>
<th>rn Teslim Alan</th>
</tr>
<tr>
<th>{{ [Link]|title }}</th>
<th>{{ [Link]|title }}</th>
<th></th>
</tr>
</table>
</div>
<div class="container">
<table border="0" cellspacing="" width="100%">
<tr><td><i style="font-size:12px;">Bakm ve onarm sresi 3 () aydr.</i></td></tr>
<tr><td><i style="font-size:12px;">Servisimizde asla kaak yazlm kullanlmamakta ve
destek verilmemektedir.</i></td></tr>
<tr><td><i style="font-size:12px;">Tamire gelen cihazlarn harddisk, yazlm ve
yedeklerinden tarafmz sorumlu deildir.</i></td></tr>
<tr><td><i style="font-size:12px;">Servise gelen rnlerde nceden bildirilmeyen
sorunlardan tarafmz sorumlu deildir.</i></td></tr>
<tr><td><i style="font-size:12px;">Servise teslim edilen rnlerin emanet sresi 30
(otuz) gn olup, sonrasnda firmamzn sorumluluu yoktur.</i></td></tr>
<tr><td><i style="font-size:12px;">Servise gelen cihazlarn chip deiim ve
kalplanmasnda oluabilecek sorunlarda tarafmz sorumlu deildir.</i></td></tr>
</table>
</div>
</body>
</html>
rn:
[Link]
[Link]:
from [Link] import TemplateView
[Link]:
url(r'^$', TemplateView.as_view(template_name="[Link]")),
[Link]:
<!DOCTYPE HTML>
<html>
<head>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<meta charset="utf-8">
<title>zmir Teknik Servis, Servis Formu kontrol, durum renme |
[Link]</title>
<meta name="description" content="zmir Teknik Servis, Servis Formu kontrol, durum
renme"/>
<link rel="canonical" href="[Link]
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
66
<link href='[Link] rel='stylesheet'
type='text/css'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="/media/[Link]">
<link rel="stylesheet" href="/media/[Link]">
</head>
<body>
<div id='wrap'>
<div id="sonuclarimuslu"
style="color:#ffffff;font-size:2.4vw;position:fixed;width:95%;top:20%;left:50%;-webkit-
transform:translate(-50%, -50%);transform: translate(-50%, -50%);">
</div>
<div id='content'>
<section class='input'>
<div>
<input type='text' placeholder='Form No' id="arama" maxlength="8">
</div>
</section>
</div>
</div>
<script src="/media/[Link]"></script>
<script src="/media/[Link]"></script>
<script src='/media/[Link]'></script>
<script>
$('section :input').val('').fancyInput()[0].focus();
var aramam = [Link]('arama');
var sonuclarimuslu = [Link]('sonuclarimuslu');
[Link]('keypress', function (event) {
if ([Link] == 13) {
[Link] = "";
if ([Link] == 8) {
[Link] = "Sorgulanyor...<br /> Ltfen bekleyiniz.";
$.post("/kn/", {
TakipNo: [Link],
csrfmiddlewaretoken: "{{ csrf_token }}"
}, function (data) {
[Link] = data;
});
} else {
[Link] = "Uygun bir arama kategorisi bulunamad!";
[Link](function () {
[Link]();
}, 0);
}
}
});
</script>
</body>
</html>
[Link]
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
67
MEDIA_ROOT = BASE_DIR + '/media/'
MEDIA_URL = '/media/'
[Link]:
from [Link] import settings
from [Link] import static
urlpatterns = [
..
..
..
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
[Link]
Alnabilecek hatalar:
SyntaxError: Non-ASCII character '\xc3' in file
/home/muslu/django/teknikservistakibi/servisformu/[Link] on line 11, but no
encoding declared; see [Link] for details
[Link] dosyasnn en bana # -*- coding: utf-8 -*- eklemeyi
unuttunuz.
$.post("/kn/", {
TakipNo: [Link],
csrfmiddlewaretoken: "{{ csrf_token }}"
}, function (data) {
[Link] = data;
});
[Link]
[Link]
[Link]:
def formdurumusorgula(request):
formno = [Link]('TakipNo', None)
### post ile gelen TakipNo'yu formno deikenine alyoruz. TakipNo parametresi yoksa None
dndr. None yerine istediiniz Bir ey yazarak yoksa bu olsun diyebilirsiniz.
Try:
formdurumu = [Link](FormNo = formno)
urunler = [Link](ServisFormu__id = [Link])
### gelen formnoya gre veritabanndan bilgileri alyoruz.
### bu bilgileri bir string te toplayarak geri gndereceiz. Bu ekilde sayfa yenilenmeden divin
iinde dnen bilgiler gzkecek.
htmltablo = u"<table style='width:100%;'><tr><th style='width:40%;'
align='left'>rn</th><th style='width:40%;' align='left'>NOT</th><th style='width:20%;'
align='left'>Durum</th></tr>"
for k in urunler:
htmltablo += "<tr>"
htmltablo += "<td align='left'>" + [Link]() + "(" + [Link]() + " "
+ [Link]() + ")</td>"
htmltablo += "<td align='left'>" + [Link] + "</td>"
htmltablo += "<td align='left'>" + [Link] + "</td>"
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
69
htmltablo += "</tr>"
htmltablo += "</table>"
return HttpResponse(htmltablo)
### HttpResponse gzel ama ingilizce. Buradan ne gnderirseniz tarayc direk onu basar
ekrana.
except:
return HttpResponse("Form no bulunamad!")
return HttpResponse("Form no bulunamad!")
[Link]:
# -*- coding: utf-8 -*-
from [Link] import settings
from [Link] import url
from [Link] import admin
from [Link] import static
from [Link] import TemplateView
from [Link] import sayfayiyazdir, formdurumusorgula
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="[Link]")),
url(r'^kn/$', formdurumusorgula, name='formdurumusorgula'),
url(r'^yazdir/([\w\-]+)/$', sayfayiyazdir, name='sayfayiyazdir'),
url(r'^admin/', [Link]),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Terminalde:
./[Link] runserver
[Link]
[Link]
..
..
..
..
htmltablo += "</table>"
print htmltablo
return HttpResponse(htmltablo)
Artk alan bir web sitemiz var ve bir ok konuya deindik. imdi
veritabannda alan ekleme ilemlerine bakalm.
[Link]:
class Urunler ( [Link] ) :
ServisFormu = [Link] ( ServisForm )
Cins = [Link] ( u'Cinsi', max_length = 30 )
Marka = [Link] ( u'Marka', max_length = 50 )
Model = [Link] ( u'Model', max_length = 50 )
SeriNo = [Link] ( u'Seri No', max_length = 250 )
GarantiBitis = [Link] ( u"Garanti Biti", default=[Link] )
Sikayet = [Link] ( u'ikayet' )
Aksesuar = [Link] ( Aksesuarlar, blank=True )
Durum = [Link] ( Durumlar )
Not = [Link] ( u'Yaplan lemler', blank=True )
TeslimatTarihi = [Link] ( u"Teslimat Tarihi", default=[Link],
blank=True )
def __unicode__(self):
return "%s %s %s" % ([Link], [Link], [Link])
class Meta:
verbose_name_plural = u"rnler"
verbose_name = u"rn"
Terminalde:
....
0005_auto_20160115_1151.py:
- Add field TeslimatTarihi to urunler
- Alter field Kodu on musteriler
- Alter field FormNo on servisform
...
..
muslu@muslu-MS-7641:~/django/teknikservistakibi/servisformu/migrations$ tree .
.
0001_initial.py
0001_initial.pyc
0002_auto_20160114_1519.py
0002_auto_20160114_1519.pyc
0003_auto_20160114_1520.py
0003_auto_20160114_1520.pyc
0004_auto_20160114_1526.py
0004_auto_20160114_1526.pyc
0005_auto_20160115_1151.py
0005_auto_20160115_1151.pyc
0006_auto_20160115_1152.py
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
76
0006_auto_20160115_1152.pyc
0007_auto_20160115_1152.py
0007_auto_20160115_1152.pyc
0008_auto_20160115_1156.py
0008_auto_20160115_1156.pyc
0009_auto_20160115_1156.py
0009_auto_20160115_1156.pyc
__init__.py
__init__.pyc
0 directories, 20 files
[Link]
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="[Link]")),
url(r'^kn/$', formdurumusorgula, name='formdurumusorgula'),
url(r'^xml/$', xmlcikart, name='xmlcikart'),
url(r'^yazdir/([\w\-]+)/$', sayfayiyazdir, name='sayfayiyazdir'),
url(r'^admin/', [Link]),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
[Link]:
<?xml version="1.0" encoding="UTF-8"?>
<ServisFormlari>
{% for k in tumformlar %}
<FormNo>{{ [Link] }}</FormNo>
{% endfor %}
</ServisFormlari>
[Link]:
<?xml version="1.0" encoding="UTF-8"?>
<ServisFormlari>
{% for k in tumformlar %}
<Form>
<Sira>{{ [Link] }}</Sira>
<FormNo>{{ [Link] }}</FormNo>
<Musteri><![CDATA[{{ [Link] }}]]></Musteri>
<TeslimEden><![CDATA[{{ [Link] }}]]></TeslimEden>
{% for l in k.urunler_set.all %}
<Cins><![CDATA[{{ [Link]|upper }}]]></Cins>
<Marka><![CDATA[{{ [Link]|upper }}]]></Marka>
<Model><![CDATA[{{ [Link]|upper }}]]></Model>
<SeriNo><![CDATA[{{ [Link] }}]]></SeriNo>
<Sikayet><![CDATA[{{ [Link] }}]]></Sikayet>
<Durum><![CDATA[{{ [Link] }}]]></Durum>
{% for kk in [Link] %}
<Aksesuar><![CDATA[{{ kk|title }}]]></Aksesuar>
{% endfor %}
{% endfor %}
</Form>
{% endfor %}
</ServisFormlari>
rn: [Link]
[Link]:
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="[Link]")),
url(r'^kn/$', formdurumusorgula, name='formdurumusorgula'),
url(r'^xml/$', xmlcikart, name='xml'),
url(r'^urunler\.xml$', xmlcikart, name='urunlerxml'),
url(r'^yazdir/([\w\-]+)/$', sayfayiyazdir, name='sayfayiyazdir'),
url(r'^admin/', [Link]),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
[Link]:
def xmlcikart(request):
tumformlar = [Link].order_by('-KayitTarihi')
Daha sonra GelenUrl adnda bir deiken ile name lere ulaabiliriz.
[Link]
[Link]
[Link]:
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="[Link]")),
url(r'^kn/$', formdurumusorgula, name='formdurumusorgula'),
url(r'^xml/$', xmlcikart, name='xml'),
url(r'^urunler\.xml$', xmlcikart, name='urunlerxml'),
url(r'^sitemap\.xml', TemplateView.as_view(template_name='[Link]',
content_type='application/xml')),
Alnabilecek hatalar:
veya
[Link]:
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="[Link]")),
url(r'^kn/$', formdurumusorgula, name='formdurumusorgula'),
url(r'^xml/$', xmlcikart, name='xml'),
url(r'^urunler\.xml$', xmlcikart, name='urunlerxml'),
url(r'^sitemap\.xml', TemplateView.as_view(template_name='[Link]',
content_type='application/xml')),
url(r'^robots\.txt', TemplateView.as_view(template_name='[Link]',
content_type='text/plain')),
[Link]
[Link]:
<!DOCTYPE HTML>
<html>
<head>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<meta charset="utf-8">
<title>zmir Teknik Servis, Servis Formu kontrol, durum renme |
[Link]</title>
<meta name="description" content="zmir Teknik Servis, Servis Formu kontrol, durum
renme"/>
<link rel="canonical" href="[Link]
<link href='[Link] rel='stylesheet'
type='text/css'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="/media/[Link]">
<link rel="stylesheet" href="/media/[Link]">
<style>
#sabitust {
position: fixed;
left: 0px;
top: 0px;
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
85
height: 100px;
width: 100%;
background: #44B78B;
z-index: 9999;
line-height: 100px;
}
#sabitalt {
position: fixed;
left: 0px;
bottom: 0px;
height: 40px;
width: 100%;
background: #C9F0DD;
z-index: 9999;
line-height: 40px;
}
/* IE 6 | ne olur ne olmaz ama fikriniz olur */
* html #footer {
position: absolute;
top: expression((0-([Link])+([Link] ?
[Link] : [Link])+(ignoreMe =
[Link] ? [Link] :
[Link]))+'px');
}
</style>
<!-- [Link] head aras -->
</head>
<body>
<div id="sabitust">Sabit st</div>
<!-- buras [Link] block ortann bir st satr -->
{% block orta %}
<!-- mey dey [Link] block ortann ii -->
{% endblock orta %}
<!-- [Link] block ortann bittii yer -->
<div id="sabitalt">Sabit Alt</div>
<script src="/media/[Link]"></script>
<script src="/media/[Link]"></script>
<script src='/media/[Link]'></script>
<script>
$('section :input').val('').fancyInput()[0].focus();
var aramam = [Link]('arama');
var sonuclarimuslu = [Link]('sonuclarimuslu');
[Link]('keypress', function (event) {
if ([Link] == 13) {
[Link] = "";
if ([Link] == 8) {
[Link] = "Sorgulanyor...<br /> Ltfen bekleyiniz.";
$.post("/kn/", {
TakipNo: [Link],
csrfmiddlewaretoken: "{{ csrf_token }}"
}, function (data) {
[Link] = data;
});
} else {
[Link] = "Uygun bir arama kategorisi bulunamad!";
[Link](function () {
[Link]();
}, 0);
}
}
});
</script>
</body>
</html>
[Link]:
{% extends "[Link]" %}
{% block orta %}
<!--buras [Link] de block ortadan hemen sonraki yer -->
<div id='wrap'>
<div id="sonuclarimuslu"
style="color:#ffffff;font-size:2.4vw;position:fixed;width:95%;top:20%;left:50%;-
webkit-transform:translate(-50%, -50%);transform: translate(-50%, -50%);">
</div>
<div id='content'>
<section class='input'>
<div>
<input type='text' placeholder='Form No' id="arama" maxlength="8">
</div>
</section>
</div>
</div>
<!--buras da [Link] de block kapanmadan nceki yer -->
{% endblock orta %}
Alnabilecek hatalar:
Exception Type: TemplateDoesNotExist
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
87
Exception Value: [Link]
extends edilecek html dosyasnn ad hata yazld.
[Link]
view-source:[Link]
te bu kadar.
[Link]:
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="[Link]")),
url(r'^test/$', TemplateView.as_view(template_name="[Link]")),
[Link]:
{% extends "[Link]" %}
{% block orta %}
<!--buras [Link] st -->
<div id='wrap'>
<div style="color:#ffffff;font-size:2.4vw;position:fixed;width:95%;top:20%;left:50%;-
webkit-transform:translate(-50%, -50%);transform: translate(-50%, -50%);">
Ne olacak bu Gztepe'nin hali?
</div>
</div>
<!--buras [Link] alt -->
{% endblock orta %}
[Link]
[Link]:
<!DOCTYPE HTML>
<html>
<head>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<meta charset="utf-8">
<title>zmir Teknik Servis, Servis Formu kontrol, durum renme |
[Link]</title>
<meta name="description" content="zmir Teknik Servis, Servis Formu kontrol, durum
renme"/>
<link rel="canonical" href="[Link]
<link href='[Link] rel='stylesheet'
type='text/css'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="/media/[Link]">
<link rel="stylesheet" href="/media/[Link]">
<style>
#sabitust {
position: fixed;
left: 0px;
top: 0px;
height: 100px;
width: 100%;
background: #44B78B;
z-index: 9999;
line-height: 100px;
}
#sabitalt {
position: fixed;
left: 0px;
bottom: 0px;
height: 40px;
width: 100%;
background: #C9F0DD;
z-index: 9999;
line-height: 40px;
}
/* IE 6 | ne olur ne olmaz ama fikriniz olur */
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
89
* html #footer {
position: absolute;
top: expression((0-([Link])+([Link] ?
[Link] : [Link])+(ignoreMe =
[Link] ? [Link] :
[Link]))+'px');
}
</style>
<!-- [Link] head aras -->
</head>
<body>
<div id="sabitust">
<p><a href="/">Ana Sayfa</a> | <a href="/test/">Test</a></p>
</div>
<!-- buras [Link] block ortann bir st satr -->
{% block orta %}
<!-- mey dey [Link] block ortann ii buras -->
{% endblock orta %}
<!-- [Link] block ortann bittii yer -->
<div id="sabitalt">Sabit Alt</div>
<script src="/media/[Link]"></script>
<script src="/media/[Link]"></script>
<script>
$('section :input').val('').fancyInput()[0].focus();
var aramam = [Link]('arama');
var sonuclarimuslu = [Link]('sonuclarimuslu');
[Link]('keypress', function (event) {
if ([Link] == 13) {
[Link] = "";
if ([Link] == 8) {
[Link] = "Sorgulanyor...<br /> Ltfen bekleyiniz.";
$.post("/kn/", {
TakipNo: [Link],
csrfmiddlewaretoken: "{{ csrf_token }}"
}, function (data) {
[Link] = data;
});
} else {
[Link] = "Uygun bir arama kategorisi bulunamad!";
[Link](function () {
[Link]();
}, 0);
}
}
});
</script>
</body>
</html>
[Link]:
{% extends "[Link]" %}
{% block orta %}
<div id='wrap'>
<div id="sonuclarimuslu"
style="color:#ffffff;font-size:2.4vw;position:fixed;width:95%;top:20%;left:50%;-
webkit-transform:translate(-50%, -50%);transform: translate(-50%, -50%);">
</div>
<div id='content'>
<section class='input'>
<div>
<input type='text' placeholder='Form No' id="arama" maxlength="8">
</div>
</section>
</div>
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
90
</div>
{% endblock orta %}
{% block jsozel %}
<script src='/media/[Link]'></script>
<script>
$('section :input').val('').fancyInput()[0].focus();
var aramam = [Link]('arama');
var sonuclarimuslu = [Link]('sonuclarimuslu');
[Link]('keypress', function (event) {
if ([Link] == 13) {
[Link] = "";
if ([Link] == 8) {
[Link] = "Sorgulanyor...<br /> Ltfen bekleyiniz.";
$.post("/kn/", {
TakipNo: [Link],
csrfmiddlewaretoken: "{{ csrf_token }}"
}, function (data) {
[Link] = data;
});
} else {
[Link] = "Uygun bir arama kategorisi bulunamad!";
[Link](function () {
[Link]();
}, 0);
}
}
});
</script>
{% endblock %}
[Link]:
{% extends "[Link]" %}
{% block orta %}
<!--buras [Link] st -->
<div id='wrap'>
<div style="color:#ffffff;font-size:2.4vw;position:fixed;width:95%;top:20%;left:50%;-
webkit-transform:translate(-50%, -50%);transform: translate(-50%, -50%);">
Ne olacak bu Gztepe'nin hali?
</div>
</div>
<!--buras [Link] alt -->
{% endblock orta %}
[Link]
[Link]:
def sayfayiyazdir(request, idsi):
formdurumu = [Link](id = idsi)
formbilgileri = [Link](ServisFormu__id = idsi)
return render(request, '[Link]', {'formbilgileri': formbilgileri,
'formdurumu':formdurumu})
filter ile bize bir liste oluturdu ve bunu [Link] de for ile
dng yapp ekrana bastrmtk.
[Link]:
{% for k in formbilgileri %}
<tr>
<td>{{ [Link]|upper }} | {{ [Link]|upper }} | {{ [Link]|upper }}</td>
<td>{{ [Link]|upper }}</td>
<td>{{ [Link]|title }}</td>
<td>{% for kk in [Link] %}{{ kk|title }} {% endfor %}</td>
<td>{{ [Link] }}</td>
</tr>
{% endfor %}
{% if "muslu" in "mslm" %}
iinde geiyor
{% else %}
iinde gemiyor
{% endif %}
yada
{% if "emir" == "cemir" %}
<p>cem + emir = cemir</p> <b>ama</b> emir; cemir demek deil.
{% endif %}
[Link]:
{% extends "[Link]" %}
{% block orta %}
<div id='wrap'>
<div style="color:#ffffff;font-size:2.4vw;position:fixed;width:95%;top:20%;left:50%;-
webkit-transform:translate(-50%, -50%);transform: translate(-50%, -50%);">
<p>Etiketler</p>
{% comment "Balk" %}
Buras html kaynak kodunda gzkmez. lerisi iin not olarak kullanlacak.
{% endcomment %}
</div>
</div>
{% endblock orta %}
</head>
<body>
<div class="dis">
<div class="sabitust">
<p><a href="/">Ana Sayfa</a> | <a href="/test/">Test</a></p>
</div>
<div class="orta">
{% block orta %}{% endblock orta %}
</div>
<div class="sabitalt">Sabit Alt</div>
</div>
<script src="/media/[Link]"></script>
<script src="/media/[Link]"></script>
{% block jsozel %}{% endblock jsozel %}
</body>
</html>
[Link]:
{% extends "[Link]" %}
{% block orta %}
<style>
.sari {
background-color: yellow;
font-size: 64pt;
}
.kirmizi {
background-color: red;
font-size: 64px;
}
.gri {
background-color: gray;
font-size: 64px;
}
</style>
<p>Etiketler</p>
<table>
<tr>
{% for o in "123456" %}
<td class="{% cycle 'sari' 'kirmizi' %}">
{{ o }}
</td>
{% endfor %}
</tr>
<tr>
{% for o in "123456789" %}
<td class="{% cycle 'gri' 'kirmizi' 'sari' %}">
{{ o }}
</td>
{% endfor %}
</tr>
</table>
{% endblock orta %}
[Link]
width: Bir veya daha fazla deeri tek seferde tanmlayp daha
sonrada kullanabilmek iin.
[Link]:
..
url(r'^test/$', test),
# url(r'^test/$',TemplateView.as_view(template_name="[Link]")),
..
olarak deitirelim.
[Link]:
def test(request):
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
97
list1 = ['muslu', 'yuksektepe']
list2 = ['digerliste1', 'digerliste2']
string = "bu bir string"
integer = 35
[Link]:
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
{% with yeniliste=list1 %}
{{ yeniliste }}
{% endwith %}
<br/>
{% with bubirke1ime=string %}
{{ bubirke1ime }}
{% endwith %}
<br/>
{% with rakam=integer %}
Gelen tam say: {{ rakam }} ve 10 ile toplatyoruz. Toplam: {{ rakam|add:"10" }}
{% endwith %}
<br/>
<br/>
{% with yeniliste=list1 digerlistem=list2 %}
{{ yeniliste }}, {{ digerlistem }}
{% endwith %}
{% endblock orta %}
[Link]
spaceless: html kodlarndaki beyaz alanlar temizler.
{% spaceless %}
<p>
</p>
{% endspaceless %}
Mesela;
add: Eer belirttiiniz deer integer ( tam say ) ise toplama ilemi,
liste ise eleman ekleme, kelime ( string ) ile rakam ileminde ise
kelime ekleme olarak kullanlabilir. Width etiketinde rnek olarak
kullandk.
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
99
{{ 6|add:"3" }}
<br/>
{{ "muslu"|add:"yksektepe" }}
<br/>
{{ "muslu"|add:"3" }}
<br/>
{{ liste|add:digerliste }}
9
musluyksektepe
muslu3
['muslu', 'yuksektepe', 'eklenendeger1', 'eklenendeger2']
21 Ocak 2016
addslashes: Kullanlacak deer de ' iareti geiyor ise sql sorgu, xml
yada csv lerde sorun yaanabilir. rnek olarak muslu'nun ya
ka? cmlesi sql komutu olsayd ' iareti yznden hata alrdk
yada cvs dosyasna kartlacak olursa hata alrz.
addslashes etiketi ise bu ' iaretinden nce \ ekleyerek hata
alnmasn engeller.
rnek:
[Link]:
hikaye = Kelolan'n kel kafasna sa ektirmek iin...
[Link]:
{{ hikaye|addslashes }}
Kelolan\'n kel kafasna sa ektirmek iin...
capfirst: lem yaplacak deer bir kelime veya cmle ise sadece
ilk harfi bytr.
[Link]:
{{ string }}
<br/>
{{ string|capfirst }}
bu bir string
Bu bir string
bu bir string
Bu bir string
bu bir string
BU BIR STRING
bu bir string
bu bir string
bu bir string
bu br strng
5
[Link]:
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
101
def test(request):
list1 = ['muslu', 'yuksektepe', '', False]
list2 = ['digerliste1', 'digerliste2', None]
...
[Link]:
{% extends "[Link]" %}
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
<ul>
{% for k in list1 %}
<li>{{ k|default:"default deeri deitirildi" }}</li>
{% endfor %}
</ul>
<ul>
{% for k in list2 %}
<li>{{ k|default_if_none:"None idi" }}</li>
{% endfor %}
</ul>
{% endblock orta %}
muslu
yuksektepe
default deeri deitirildi
default deeri deitirildi
digerliste1
digerliste2
None idi
Alnabilecek hatalar:
invalid literal for int() with base 10: 'bu bir string'
string deeri blme ileminde kullandnz.
[Link]:
{% extends "[Link]" %}
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
{{ list1|length_is:"4" }}
<br/>
{{ list2|length_is:"5" }}
<br/>
{% if not list2|length_is:"5" %} list2 deki eleman says 5 deilmi {% else %} eleman
says e {% endif %}
{% endblock orta %}
[Link]:
{% extends "[Link]" %}
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
"{{ list1|random }}"
{% endblock orta %}
[Link]:
{% extends "[Link]" %}
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
{{ list1 }}
<br/>
[0:2]
<br/>
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
103
{{ list1|slice:"0:2" }}
<br/><br/>
{{ list2 }}
<br/>
[1:4]
<br/>
{{ list2|slice:"1:4" }}
{% endblock orta %}
Ekran kts:
rnek:
{{ "<p><a href='/'>Ana Sayfa</a> | <a href='/test/'>Test</a></p>"|striptags }}
{{ htmlkodlar|striptags }}
{{ string|truncatechars:6 }}<br/><br/>
{{ string|truncatechars_html:6 }}<br/><br/>
{{ string|truncatewords:2 }}<br/><br/>
{{ string|truncatewords_html:2 }}<br/><br/>
[Link]:
{% extends "[Link]" %}
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
{{ string|make_list }}
<br/><br/>
{% for k in integer|make_list %}
{{ k }}<br/>
{% endfor %}
{% endblock orta %}
kts:
[u'b', u'u', u' ', u'b', u'i', u'r', u' ', u's', u't', u'r', u'i',
u'n', u'g']
3
5
[Link]:
{% extends "[Link]" %}
Muslu YKSEKTEPE 2016
[Link] | [Link]
Ba Hesab: TR03 0006 2000 7500 0006 6675 10
105
{% block orta %}
<p>Etiketler</p>
<br/><br/><br/><br/>
{{ "[Link] }}
<br/><br/>
{{ "[Link] }}
<br/><br/>
{{ "[Link]"|urlize }}
<br/><br/>
{{ "[Link]"|urlize }}
<br/><br/>
{{ "djangoturkiye"|urlize }}
<br/><br/>
{{ "[Link]"|urlize }}
<br/><br/>
.com, .net, .org, .edu, .gov, .int, .mil
{% endblock orta %}
html kts:
<div class="orta">
<p>Etiketler</p>
<br/><br/><br/><br/>
<a href="[Link] rel="nofollow">[Link]
<br/><br/>
[Link]
<br/><br/>
djangoturkiye
<br/><br/>
</div>