django introduction

Post on 24-Jan-2015

2.512 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Django"The web framework for

perfectionists with deadlines"

http://djangoproject.orghttp://django.org.tr

Fatih ERİKLİ

http://hipo.bizhttp://fatiherikli.comhttp://github.com/fatiherikli

Django Developer @hipo

Django Nedir?

Python üzerinde geliştirilen mümkün olduğunca az kod yazarak web uygulamaları geliştirmenizi sağlayan web framework'tür.

Neden Django?

● Python üzerinde çalışması

● DRY (Kendini tekrar etme!)

● Pluggable (tak çalıştır) uygulamalar

● Test edilebilirlik

● Çok iyi bir topluluk

Avantajları

● Built-in admin uygulaması

● ORM

● GEODjango

● Internationalization (i18n)

● ...

Kurulum

$ pip install django

Proje oluşturmak$ django-admin.py startproject helloworld

helloworld|-- helloworld| |-- __init__.py| |-- settings.py| |-- urls.py| `-- wsgi.py`-- manage.py

settings.py

Projenin ayarları bu dosyada yapılır.

● Veritabanı ayarları● Email ayarları● Kullanılacak uygulamalar

urls.py

Sitenin URL'leri bu dosyada belirlenir.

manage.py

Proje bu script üzerinden yönetilir.

Uygulamalar

Bir django projesi parça parça

uygulamalardan oluşur.

Uygulamalar

Bu uygulamalar genelde bir kısmı sizin

yazdıgınız, bir kısmını varsayılan olarak

gelenler, bir kısmı ise 3. parti

uygulamalardır.

Uygulama oluşturmak

python manage.py startapp blog

blog|-- __init__.py|-- models.py|-- tests.py`-- views.py

Uygulamanın yapısı

Bir uygulama

● Model

● View

● Template

öğelerinden oluşur.

Model

Uygulamanın veritabanı ile ilişkisi bu katmanda belirlenir. Her bir model veritabanındaki bir tablo ile eşleşir.

from django.db import models

class Category(models.Model):

"""

Holds category data

"""

name = models.CharField(max_length=255)

def __unicode__(self):

return self.name

class Post(models.Model):

"""

Holds blog post data

"""

title = models.CharField(max_length=255)

category = models.ManyToManyField(Category)

description = models.TextField(blank=True, null=True)

body = models.TextField()

def __unicode__(self):

return self.title

View

View'lar kullanıcının karşılandığı ve ona yanıt verildiği katmandır.

def show_post(request, post_id):

post = get_object_or_404(Post, id=post_id)

return render_to_response("post_detail.html", {

"post": post

})

class PostDetailView(DetailView):

model = Post

pk_url_kwarg = "post_id"

Function based view

Class based view

Template

Kullanıcıya verilecek olan yanıtın işlendiği bölümdür. Template'lar HTML sonuçlar üretmeyi kolaylaştırırlar.

Front-end developer'lar bunu çok sever.

<div class="post">

<h1>{{ post.title }}</h1>

<p>{{ post.body }}</p>

<ul>

{% for category in post.categories.all %}

<li>{{ category.name }}</li>

{% endfor %}

</ul>

</div>

HTML Template

Teşekkürler

top related