django - webes keretrendszer mindenkinek

129
webes keretrendszer határidőkkel rendelkező perfekcionistáknak Farkas Szilveszter Linux Akadémia 2008 Szerencs, 2008. július 11.

Upload: szilveszter-farkas

Post on 24-May-2015

5.343 views

Category:

Technology


5 download

DESCRIPTION

@ Linux Akadémia 2008. Szerencs, 2008. július 11.

TRANSCRIPT

Page 1: Django - webes keretrendszer mindenkinek

webes keretrendszerhatáridőkkel rendelkező

perfekcionistáknak

Farkas SzilveszterLinux Akadémia 2008

Szerencs, 2008. július 11.

Page 2: Django - webes keretrendszer mindenkinek

webes keretrendszermindenkinek

Farkas SzilveszterLinux Akadémia 2008

Szerencs, 2008. július 11.

Page 3: Django - webes keretrendszer mindenkinek

tartalomwebes keretrendszerek

módszertanokpéldákPython

gyorstalpaló

Page 4: Django - webes keretrendszer mindenkinek

tartalomdjango története

alapokbeépített szolgáltatásokkiegészítő szolgáltatások

hasznos alkalmazásoksaját alkalmazás készítése

Page 5: Django - webes keretrendszer mindenkinek

webes keretrendszerekáltalános tudnivalók

Page 6: Django - webes keretrendszer mindenkinek

Ruby on Rails2004. július, David Heinemeier Hansson

Page 7: Django - webes keretrendszer mindenkinek

Basecampbasecamphq.com

Page 8: Django - webes keretrendszer mindenkinek

A List Apartalistapart.com

Page 9: Django - webes keretrendszer mindenkinek

Twittertwitter.com

Page 10: Django - webes keretrendszer mindenkinek

Githubgithub.com

Page 11: Django - webes keretrendszer mindenkinek

módszertanok

Page 12: Django - webes keretrendszer mindenkinek

DRY„Don’t Repeat Yourself”

Page 13: Django - webes keretrendszer mindenkinek

MVC

Page 14: Django - webes keretrendszer mindenkinek

MVCModel

Page 15: Django - webes keretrendszer mindenkinek

MVCView

Page 16: Django - webes keretrendszer mindenkinek

MVCController

Page 17: Django - webes keretrendszer mindenkinek

automatizmus

Page 18: Django - webes keretrendszer mindenkinek

példák

Page 19: Django - webes keretrendszer mindenkinek

RubyMerb, Ruby on Rails

Page 20: Django - webes keretrendszer mindenkinek

PHPCakePHP, Doctrine, Symfony

Page 21: Django - webes keretrendszer mindenkinek

PythonDjango, Pylons, TurboGears, Zope

Page 22: Django - webes keretrendszer mindenkinek

Python

Page 23: Django - webes keretrendszer mindenkinek

Python programozásSzalay Attila

Page 24: Django - webes keretrendszer mindenkinek

?

Page 25: Django - webes keretrendszer mindenkinek

objektumorientált

Page 26: Django - webes keretrendszer mindenkinek

struktúrált kód

Page 27: Django - webes keretrendszer mindenkinek

könnyen tanulható

Page 28: Django - webes keretrendszer mindenkinek

platformfüggetlen

Page 29: Django - webes keretrendszer mindenkinek

rengeteg modulPython Package Index (PyPI)

Page 30: Django - webes keretrendszer mindenkinek

interaktív shell/usr/bin/python, IPython

Page 31: Django - webes keretrendszer mindenkinek

The Zen of Python

Page 32: Django - webes keretrendszer mindenkinek

>>> import thisThe Zen of Python, by Tim Peters

Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren't special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face of ambiguity, refuse the temptation to guess.There should be one-- and preferably only one --obvious way to do it.Although that way may not be obvious at first unless you're Dutch.Now is better than never.Although never is often better than *right* now.If the implementation is hard to explain, it's a bad idea.If the implementation is easy to explain, it may be a good idea.Namespaces are one honking great idea -- let's do more of those!

Page 33: Django - webes keretrendszer mindenkinek

gyorstalpaló

Page 34: Django - webes keretrendszer mindenkinek

tagolás

Page 35: Django - webes keretrendszer mindenkinek

a = 5if a > 5: print "A nagyobb, mint 5."else: print "A nem nagyobb, mint 5."

Page 36: Django - webes keretrendszer mindenkinek

függvénydefiníció

Page 37: Django - webes keretrendszer mindenkinek

def fuggveny(a, b=3): print "Az eredmény:", a + b return a + b

Page 38: Django - webes keretrendszer mindenkinek

osztálydefiníció

Page 39: Django - webes keretrendszer mindenkinek

class Osztaly(OsOsztaly): tagvaltozo = 0

def __init__(self): print "Én vagyok a konstruktor."

def tagfuggveny(self, valtozo): self.tagvaltozo += valtozo def negyzet(self): return self.tagvaltozo ** 2

Page 40: Django - webes keretrendszer mindenkinek

modulok

Page 41: Django - webes keretrendszer mindenkinek

import sys

from subprocess import Popen

from os.path import join as pathjoin

Page 42: Django - webes keretrendszer mindenkinek
Page 43: Django - webes keretrendszer mindenkinek

történet

Page 44: Django - webes keretrendszer mindenkinek

Adrian HolovatyLawrence Journal-World, Kansas

Page 45: Django - webes keretrendszer mindenkinek

<1.0 (0.96.2)

Page 46: Django - webes keretrendszer mindenkinek

alapok

Page 47: Django - webes keretrendszer mindenkinek

MVC

Page 48: Django - webes keretrendszer mindenkinek

MTV

Page 49: Django - webes keretrendszer mindenkinek

MTVModel

Page 50: Django - webes keretrendszer mindenkinek

MTVTemplate

Page 51: Django - webes keretrendszer mindenkinek

MTVView

Page 52: Django - webes keretrendszer mindenkinek

ORMobject-relational mapper

Page 53: Django - webes keretrendszer mindenkinek

adatoknatív objektumok

Page 54: Django - webes keretrendszer mindenkinek

lekérdezésekbeépített nyelvi elemekkel támogatva

Page 55: Django - webes keretrendszer mindenkinek

mezőtípusokbeépített validációval

Page 56: Django - webes keretrendszer mindenkinek

AutoFieldBooleanFieldCharField

CommaSeparatedIntegerFieldDateField

DateTimeFieldDecimalFieldEmailFieldFileField

FilePathFieldFloatFieldImageField

IntegerFieldIPAddressField

NullBooleanFieldPhoneNumberField

PositiveIntegerFieldPositiveSmallIntegerField

SlugFieldSmallIntegerField

TextFieldTimeFieldURLField

USStateFieldXMLField

Page 57: Django - webes keretrendszer mindenkinek

kapcsolatoktöbb-egy, több-több, egy-egy

Page 58: Django - webes keretrendszer mindenkinek

class Article(models.Model): title = fields.CharField() body = fields.TextField() submitted = fields.DateTimeField() author = fields.ForeignKey(User) published = fields.BooleanField()

Page 59: Django - webes keretrendszer mindenkinek

sablon rendszer

Page 60: Django - webes keretrendszer mindenkinek

alapvetően html

Page 61: Django - webes keretrendszer mindenkinek

{% tagek %}

Page 62: Django - webes keretrendszer mindenkinek

{% block "nev" %}Ide jöhet akármi.{% endblock %}

{% if feltetel %}Feltétel teljesült.{% else %}Nem teljesült a feltétel.{% endif %}

Page 63: Django - webes keretrendszer mindenkinek

{{ változók }}

Page 64: Django - webes keretrendszer mindenkinek

{{ valtozo }}

{{ objektum.tagvaltozo }}

{{ objektum.tagfuggveny }}

Page 65: Django - webes keretrendszer mindenkinek

|szűrők

Page 66: Django - webes keretrendszer mindenkinek

{{ datum|date:"Y. m. d." }}

2008. 07. 11.

{{ html|escape }}

<strong>Django</strong> (nem Django)

{{ meret|filesizeformat }}

234.5 MB

Page 67: Django - webes keretrendszer mindenkinek

leszármaztatás

Page 68: Django - webes keretrendszer mindenkinek

{% extends "base.html" %}{% block "title" %}Másik cím{% endblock %}

<head> <title>{% block "title" %}Oldal címe{% endblock %}</title></head>

base.html

extended.html

Page 69: Django - webes keretrendszer mindenkinek

nézetek

Page 70: Django - webes keretrendszer mindenkinek

kérés - válaszHttpRequest - HttpResponse

Page 71: Django - webes keretrendszer mindenkinek

1. szabályHttpRequest objektumot kapunk

Page 72: Django - webes keretrendszer mindenkinek

2. szabályHttpResponse objektumot kell visszaadnunk

Page 73: Django - webes keretrendszer mindenkinek

def nezet(request): response = HttpResponse() return response

Page 74: Django - webes keretrendszer mindenkinek

urlconfnézetek hozzárendelése url-ekhez

Page 75: Django - webes keretrendszer mindenkinek

REST(ful)szép url-ek

Page 76: Django - webes keretrendszer mindenkinek

/cikkek//cikkek/2008/07/11/linux-akademia//felhasznalok//felhasznalok/gipszjakab//uzenetek//uzenetek/1024//uzenetek/1024/szerkesztes//uzenetek/1024/torles/

Page 77: Django - webes keretrendszer mindenkinek

urlpatterns = patterns('', (r'^cikkek/(\d{4})/$', 'oldalam.views.eves_archivum'), (r'^cikkek/(\d{4})/(\d{2})/$', 'oldalam.views.havi_archivum'), (r'^cikkek/(\d{4})/(\d{2})/(\d+)/$', 'oldalam.views.oldal_reszletek'),)

Page 78: Django - webes keretrendszer mindenkinek

paraméterátadás

Page 79: Django - webes keretrendszer mindenkinek

urlpatterns = patterns('', (r'^szavazasok/$', 'oldalam.szavazo.views.kezdo'), (r'^szavazasok/(?P<azon>\d+)/$', 'oldalam.szavazo.views.reszletek'), (r'^szavazasok/(?P<azon>\d+)/eredmenyek/$', 'oldalam.szavazo.views.eredmenyek'), (r'^szavazasok/(?P<azon>\d+)/szavazas/$', 'oldalam.szavazo.views.szavazas'),)

Page 80: Django - webes keretrendszer mindenkinek

def reszletek(request, azon): sz = get_object_or_404(Szavazas, pk=azon) return render_to_response('szavazas_reszletek.html', {'szavazas': sz})

Page 81: Django - webes keretrendszer mindenkinek

newformsűrlapok egyszerűen

Page 82: Django - webes keretrendszer mindenkinek

mezőkhasonlóan a modellekhez

Page 83: Django - webes keretrendszer mindenkinek

widgetek

Page 84: Django - webes keretrendszer mindenkinek

validálásbeépített, vagy egyedi

Page 85: Django - webes keretrendszer mindenkinek

validálásmezőnként, vagy globálisan

Page 86: Django - webes keretrendszer mindenkinek

modell → űrlap

Page 87: Django - webes keretrendszer mindenkinek

class ArticleForm(forms.ModelForm): class Meta: model = Article

Page 88: Django - webes keretrendszer mindenkinek

beépített szolgáltatások

Page 89: Django - webes keretrendszer mindenkinek

adatbázis hozzáférésMySQL, Oracle, PostgreSQL, SQLite

Page 90: Django - webes keretrendszer mindenkinek

adatbázis hozzáféréstranzakciókezeléssel

Page 91: Django - webes keretrendszer mindenkinek

munkamenetek(sessions)

Page 92: Django - webes keretrendszer mindenkinek

gyorsítótárazás(caching)

Page 93: Django - webes keretrendszer mindenkinek

honosítás(internationalization)

Page 94: Django - webes keretrendszer mindenkinek

unicode mindenhol

Page 95: Django - webes keretrendszer mindenkinek

lapszámozás(pagination)

Page 96: Django - webes keretrendszer mindenkinek

szerializációXML, JSON, Python, YAML

Page 97: Django - webes keretrendszer mindenkinek

fájlfeltöltésbármekkora fájlmérettel

Page 98: Django - webes keretrendszer mindenkinek

middleware-ek

Page 99: Django - webes keretrendszer mindenkinek

rövidítések(shortcuts)

Page 100: Django - webes keretrendszer mindenkinek

tesztelés

Page 101: Django - webes keretrendszer mindenkinek

kiegészítő szolgáltatások

Page 102: Django - webes keretrendszer mindenkinek

authfelhasználók, csoportok és jogosultságok

Page 103: Django - webes keretrendszer mindenkinek

adminadminisztrációs felület két sor kóddal

Page 104: Django - webes keretrendszer mindenkinek

class Article(models.Model): title = fields.CharField() body = fields.TextField() submitted = fields.DateTimeField() author = fields.ForeignKey(User) published = fields.BooleanField()

Page 105: Django - webes keretrendszer mindenkinek

class Article(models.Model): title = fields.CharField() body = fields.TextField() submitted = fields.DateTimeField() author = fields.ForeignKey(User) published = fields.BooleanField()

class Admin: pass

Page 106: Django - webes keretrendszer mindenkinek

databrowse„adminisztrációs felület látogatóknak”

Page 107: Django - webes keretrendszer mindenkinek

flatpagesstatikus oldalak

Page 108: Django - webes keretrendszer mindenkinek

form previewűrlapon szereplő adatok megerősítése beküldés előtt

Page 109: Django - webes keretrendszer mindenkinek

form wizardtöbblépéses űrlapok

Page 110: Django - webes keretrendszer mindenkinek

redirectsátirányítások

Page 111: Django - webes keretrendszer mindenkinek

sitestöbb honlap egy telepítéshez

Page 112: Django - webes keretrendszer mindenkinek

sitemapskeresőbarát oldalszerkezet biztosítása

Page 113: Django - webes keretrendszer mindenkinek

syndicationRSS és Atom hírforrások létrehozása

Page 114: Django - webes keretrendszer mindenkinek

webdesignLorem Ipsum generátor

Page 115: Django - webes keretrendszer mindenkinek

hasznos alkalmazások

Page 116: Django - webes keretrendszer mindenkinek

django-registrationfelhasználók regisztrációjához

Page 117: Django - webes keretrendszer mindenkinek

django-contact-formrugalmas kapcsolatfelvételi űrlap

Page 118: Django - webes keretrendszer mindenkinek

django-taggingbármelyik modellünket címkézhetjük vele

Page 119: Django - webes keretrendszer mindenkinek

django-openidOpenID támogatás implementációja

Page 120: Django - webes keretrendszer mindenkinek

és még sokan mások...Google Code

Page 121: Django - webes keretrendszer mindenkinek

saját alkalmazás készítése

Page 122: Django - webes keretrendszer mindenkinek

1. előkészítésprojekt és alkalmazás létrehozása

Page 123: Django - webes keretrendszer mindenkinek

2. modellezésadatmodell meghatározása

Page 124: Django - webes keretrendszer mindenkinek

3. URL-ekmilyen címen mit szolgáltatunk

Page 125: Django - webes keretrendszer mindenkinek

4. nézelődésnézetek leprogramozása

Page 126: Django - webes keretrendszer mindenkinek

5. sablonaz alkalmazás kinézetének elkészítése

Page 127: Django - webes keretrendszer mindenkinek
Page 128: Django - webes keretrendszer mindenkinek

Köszönöm a figyelmet!http://phanatic.hu/

Page 129: Django - webes keretrendszer mindenkinek

KöszönetTörök Gábor

http://gábor.20y.hu/django/