webes keretrendszermindenkinek
Farkas Szilveszterbudapest.py
2009. június 25.
tartalomtörténetalapok
beépített szolgáltatásokkiegészítő szolgáltatások
hasznos alkalmazások
történet
Adrian HolovatyLawrence Journal-World, Kansas
1.0hamarosan 1.1
alapok
MVC
MTV
MTVModel
MTVTemplate
MTVView
ORMmodel
adatoknatív objektumok
lekérdezésekbeépített nyelvi elemekkel támogatva
mezőtípusokbeépített validációval
AutoFieldBooleanFieldCharField
CommaSeparatedIntegerFieldDateField
DateTimeFieldDecimalFieldEmailFieldFileField
FilePathFieldFloatFieldImageField
IntegerFieldIPAddressField
NullBooleanFieldPhoneNumberField
PositiveIntegerFieldPositiveSmallIntegerField
SlugFieldSmallIntegerField
TextFieldTimeFieldURLField
USStateFieldXMLField
kapcsolatoktöbb-egy, több-több, egy-egy
class Article(models.Model): title = fields.CharField() body = fields.TextField() submitted = fields.DateTimeField() author = fields.ForeignKey(User) published = fields.BooleanField()
sablon rendszertemplate
alapvetően html
{% tagek %}
{% block "nev" %}Ide jöhet akármi.{% endblock %}
{% if feltetel %}Feltétel teljesült.{% else %}Nem teljesült a feltétel.{% endif %}
{{ változók }}
{{ valtozo }}
{{ objektum.tagvaltozo }}
{{ objektum.tagfuggveny }}
|szűrők
{{ datum|date:"Y. m. d." }}
2008. 07. 11.
{{ html|escape }}
<strong>Django</strong> (nem Django)
{{ meret|filesizeformat }}
234.5 MB
leszármaztatás
{% extends "base.html" %}{% block "title" %}Másik cím{% endblock %}
<head> <title>{% block "title" %}Oldal címe{% endblock %}</title></head>
base.html
extended.html
nézetekview
kérés - válaszHttpRequest - HttpResponse
1. szabályHttpRequest objektumot kapunk
2. szabályHttpResponse objektumot kell visszaadnunk
def nezet(request): response = HttpResponse() return response
urlconfnézetek hozzárendelése url-ekhez
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'),)
paraméterátadás
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'),)
def reszletek(request, azon): sz = get_object_or_404(Szavazas, pk=azon) return render_to_response('szavazas_reszletek.html', {'szavazas': sz})
formsűrlapok egyszerűen
mezőkhasonlóan a modellekhez
widgetek
validálásbeépített, vagy egyedi
validálásmezőnként, vagy globálisan
modell → űrlap
class ArticleForm(forms.ModelForm): class Meta: model = Article
beépített szolgáltatások
adatbázis hozzáférésMySQL, Oracle, PostgreSQL, SQLite
adatbázis hozzáféréstranzakciókezeléssel
munkamenetek(sessions)
gyorsítótárazás(caching)
honosítás(internationalization)
unicode mindenhol
lapszámozás(pagination)
szerializációXML, JSON, Python, YAML
fájlfeltöltésbármekkora fájlmérettel
middleware-ek
tesztelés
kiegészítő szolgáltatások
authfelhasználók, csoportok és jogosultságok
adminadminisztrációs felület pár sor kóddal
databrowse„adminisztrációs felület látogatóknak”
flatpagesstatikus oldalak
form previewűrlapon szereplő adatok megerősítése beküldés előtt
form wizardtöbblépéses űrlapok
sitestöbb honlap egy telepítéshez
sitemapskeresőbarát oldalszerkezet biztosítása
syndicationRSS és Atom hírforrások létrehozása
webdesignLorem Ipsum generátor
hasznos alkalmazások
django-registrationfelhasználók regisztrációjához
django-contact-formrugalmas kapcsolatfelvételi űrlap
django-taggingbármelyik modellünket címkézhetjük vele
django-openidOpenID támogatás implementációja
és még sokan mások...Google Code
Köszönöm a figyelmet!http://szilveszterfarkas.com/
KöszönetTörök Gábor
http://gábor.20y.hu/django/