Django. 9.9.2010 Jani Roine



Samankaltaiset tiedostot
Verkkosivut perinteisesti. Tanja Välisalo

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Ulkoasun muokkaus CSS-tiedostossa

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

HELPPOKÄYTTÖISEN VERKKOSIVUSTON KEHITTÄMINEN PYTHONILLA JA DJANGOLLA

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

REST rajapintana mobiilikehityksessä

KARELIA-AMMATTIKORKEAKOULU Tietojenkäsittelyn koulutusohjelma. Henri Portimo PYTHON JA DJANGO WEBKEHITYKSESSÄ

ICT1TN004. Lomakkeet. Heikki Hietala

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Julkaisujärjestelmän peruskäyttö. Pikaohje

TYPO3 - Open Source Enterprise CMS

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Web-sovellus Django-sovelluskehyksellä

SQL Buddy JAMK Labranet Wiki

kansainvälistäminen ja paikallistaminen Zopessa Plonen käännöstyö Asko Soukka, Jyväskylän yliopisto

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

Tikon Ostolaskujenkäsittely versio SP1

WEB-SOVELLUKSEN TEKO DJANGOLLA

ecome Markkinoiden kehittynein julkaisujärjestelmä

Verkkokaupan teeman toteutus ReactJS:llä

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

Action Request System

Ohjeet vastaamiseen SFTP:llä. Yleistä Kirjautuminen Varmistus/sormenjälki Tiedostojen kopiointi Yhteystietojen antaminen

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

Ohjelmoinnin perusteet Y Python

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

TIETOKANNAT JOHDANTO

server "Ismo" $ uname -a Linux ismo #1 SMP Thu Sep 16 19:35:51 UTC 2010 i686 GNU/Linux $ cat /etc/issue Debian GNU/Linux 5.

Sivupohjien täyttö suppeat sivupohjat

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Rakennusmateriaalien emissiot sisäilmaan Suomalainen M1-luokitus ja tulevat vaatimukset CE- merkinnässä

Wordpress-julkaisualusta. Mediatekniikan seminaari Harri Viitala

Ryhmäläisten nimet:

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä.

Digitaalisen median tekniikat xhtml - jatkuu

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Tietokannan luominen:

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

Mainonnanhallinta Käyttöopastus. Tekniikka. Olli Erjanti Mediareaktori

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

TIETOJENKÄSITTELY/PIKATAIVAL2 Tehtävä G

SISÄILMAEMISSIOT OSANA RAKENNUSTUOTTEIDEN VAARALLISTEN AINEIDEN PÄÄSTÖARVIOINNIN EUROOPPALAISTA HARMONISOINTIA

Pikaohje formaatin valmistamiseen

JavaScript alkeet Esimerkkikoodeja moniste 2

VALOKUVAUSSIVUSTON TOTEUTUS JA KÄYTTÖÖNOTTO DJANGOLLA

LINUX-HARJOITUS, MYSQL

Sähköpostitilin käyttöönotto

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Ballististen Materiaalien mallinnusavusteinen kehittäminen - BalMa

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

A TIETOKANNAT, 3 op Syksy TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

Uudistettu käyttöliittymä osoitteessa

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

Turvallisuuden ja toimintavarmuuden hallinta tieliikenteen kuljetusyrityksissä. Anne Silla ja Juha Luoma VTT

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

Kotisivujen teko. Jan Lindholm Kirkkonummen kansalaisopisto Syksy koodari.eu jsbin.com

Johdatusta selainohjelmointiin

Ylläpitodokumentti Mooan

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Putteri Käyttöliittymä ja ulkoasu

ICT1TN004 Hakukoneoptimoin p ti Heikki Hiet Hie ala t

Pieni johdatus L A TEXin Listings-pakettiin. Jonne Itkonen

Digitaalisen median tekniikat xhtml - jatkuu

opinnäytteiden palautuksessa, käsittelyssä ja arvostelussa Joonas Kesäniemi

Ympäristöjalanjäljet - miten niitä lasketaan ja mihin niitä käytetään? Hiilijalanjälki

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

206 Verkkosivun tuottaminen finaalitehtävät

ez Publish ja Toolbar yleisohjeet

Verkkokaupan toivelistaominaisuuden kehitys Django- ohjelmistokehyksellä case Levykauppa Äx

Palvelinpuolen ohjelmointi

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

POISSAOLOJEN SEURANTAJÄRJESTELMÄ

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

10 yleistä hakukoneoptimointivirhettä

Menetelmäraportti - Konfiguraationhallinta

Finnan ja kirjaston palveluiden ohjeita

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Perintä (inheritance)

Älykkyyttä, mutta millä hinnalla. Logistics 14 -tapahtuma Dr. Karri Rantasila, Asiakaspäällikkö Liikenne ja logistiikka VTT

Hakukoneoptimoinnin ABC

Laajuus 5 op Luennot: 12 x 2t Harjoitukset: 7 viikkoharjoitusta harjoitusten tekemiseen saatavissa apua 2 ryhmää / harjoitus

Taustaa. CGI-ohjelmointi

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty

Transkriptio:

Django 9.9.2010 Jani Roine

Sisältö Yleiskatsaus Koodiesimerkkejä Mallit, URL-ohjain, näkymät, sivupohjat Lomakkeiden käsittely Ylläpitosivusto Keskustelua

Django lyhyesti Python-ohjelmointikielellä toteutettu ohjelmistokehys verkkosovellusten kehittämistä varten The Web framework for perfectionists with deadlines Django sai alkunsa Lawrence Journal-World sanomalehden sisäisenä projektina vuonna 2003 Adrian Holovaty, Simon Willison ja myöhemmin Jakob Kaplan-Moss Lähdekoodi julkaistiin avoimeksi heinäkuussa 2005 Nimettiin jazz-kitaristi Django Reinhardtin mukaan BSD-lisenssi

Django 5-v Lähdekoodi avoimeksi (djangoproject.com) 07/2005 Django 0.91 01/2006 Django 0.96 03/2007 Django 1.0 09/2008 Django 1.2 05/2010 11/2005 Django 0.90 07/2006 Django 0.95 12/2007 DjangoBook 07/2009 Django 1.1 12/2010? Django 1.3

Tavoitteet ja periaatteet Tavoitteena yksinkertaistaa ja nopeuttaa monimutkaisten tietokantapohjaisten verkkosivustojen kehitystä Vähemmän koodia, vähemmän toistoa Avaimet käteen -periaate Django perustuu MVC-arkkitehtuuriin (malli-näkymäohjain), jonka tarkoituksena on erottaa sovelluksen käyttöliittymä tiedon varastoinnista ja käsittelystä Djangossa näkymä on osa kontrolleria (model-viewtemplate)

Djangon oppiminen Python-ohjelmoinnin perusteet Django on käytännössä kokoelma Python-kielellä toteutettuja kirjastoja Tietokantojen perusteet Projektin verkkosivustolla erinomainen tutoriaali sekä dokumentaatio http://docs.djangoproject.com Kehittäjien kirjoittama kirja luettavissa verkossa ilmaiseksi http://djangobook.com Aktiivinen online-yhteisö

Palvelinvaatimukset Apache + mod_python tai mod_wsgi Vaihtoehtoisesti FastCGI:tä tukeva tai mikä tahansa WSGIyhteensopiva web-palvelin Django tukee useita tietokantapalvelimia: PostgeSQL MySQL SQLite Oracle + MS SQL, DB2 ja SQL Anywhere liitännät erikseen Google App Engine sisältää Django 0.96.1-version

Keskeiset ominaisuudet ORM (object-relational mapper) mahdollistaa relaatiotietokantataulujen rivien muuntamisen ohjelmiston olioiksi Säännöllisiä lausekkeita käyttävä URL-ohjain Sivupohjamoottori Lomakkeiden käsittely Kevyt sisäänrakennettu web-palvelin kehitystä ja testausta varten Tuki sovelluksien internationalisoinnille ja lokalisoinnille Cache framework

Django-projektin aloitus python django-admin.py startproject demo settings.py... DATABASES = { demo/ init.py manage.py settings.py 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/path/to/demo/demo.db', 'USER': '', 'PASSWORD': '', 'HOST': '', urls.py } 'PORT': '', } INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', python manage.py startapp levylista 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', django.contrib.admin, 'demo', )...

models.py # -*- coding: utf-8 -*- from django.db import models GENRET = ((1, u'pop'), (2, u'jazz')) class Artisti(models.Model): nimi = models.charfield(max_length=100) genre = models.positivesmallintegerfield(choices=genret) kotisivu = models.urlfield(blank=true) def unicode (self): return self.nimi

Tietokantakyselyt >>> from demo.models import Artisti, Julkaisu >>> Artisti.objects.all() [] >>> a = Artisti(nimi="The Cure", genre=1) >>> a.save() >>> a.nimi u'the Cure' >>> b = Artisti(nimi="The xx", genre=1) >>> b.save() >>> Artisti.objects.all() [<Artisti: The Cure>, <Artisti: The xx>] >>> j = Julkaisu(artisti=a, nimi="three Imaginary Boys")

urls.py from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('demo.views', (r'^$', 'etusivu'), (r'^artistit/(?p<artisti_id>\d+)/$', 'artisti'), (r'^julkaisut/(?p<julkaisu_id>\d+)/$', 'julkaisu'), ) urlpatterns += patterns('', ) (r'^admin/', include(admin.site.urls)),

views.py from django.shortcuts import render_to_response, get_object_or_404 from demo.models import Artisti, Julkaisu def etusivu(request): artistit = Artisti.objects.all() return render_to_response('index.html', {'artistit': artistit}) def artisti(request, artisti_id): artisti = get_object_or_404(artisti, pk=artisti_id) return render_to_response('artisti.html', {'artisti': artisti}) def julkaisu(request, julkaisu_id): julkaisu = get_object_or_404(julkaisu, pk=julkaisu_id) return render_to_response('julkaisu.html', {'julkaisu': julkaisu})

Sivupohjamoottori Sivupohjien avulla voidaan luoda mitä tahansa tekstimuotoisia dokumentteja Sivupohjissa on tekstiä, muuttujia sekä niihin liittyviä suotimia ja tageja Muuttujia käsitellään notaatiolla {{ artisti.nimi }} Suotimia voidaan ketjuttaa muuttujiin {{ artisti.nimi upper }} The Cure > THE CURE {{ artisti.nimi truncatewords:1 }} The Cure > The Tagien avulla voidaan esimerkiksi tulostaa tekstiä, läpikäydä tietueita ja sisällyttää uusia tiedostoja {% if muuttuja %} ja {% else %} {% for %} {% url %} {% comment %} Sivupohjamoottoria on mahdollista laajentaa luomalla uusia suodattimia

Esimerkkejä templates/base.html sivupohjista templates/index.html <!doctype html> <html lang="en"> {% extends "base.html" %} <head> <title>{% block title %}Demo{% endblock %}</title> </head> <body> {% block content %} <ul> {% for artisti in artistit %} <li> <h1>demo</h1> <a href="{% url demo.views.artisti artisti.id %}"> <div id="content"> {% block content %}{% endblock %} </div> {{ artisti.nimi }} </a> </li> {% endfor %} </body> </html> <ul> {% endblock %}

model = Artisti Lomakkeiden Djangon Form-luokan tarkoituksena on helpottaa lomakkeiden käsittelyä käsittely from django import forms GENRET = ((1, u'pop'), (2, u'jazz')) class ArtistiForm(forms.Form): nimi = forms.charfield() genre = forms.choicefield(choices=genret) Koska lomake on usein samankaltainen malliluokan kanssa, voidaan se johtaa suoraan mallista kotisivu = forms.urlfield() from django.forms import ModelForm from demo.models import Artisti class ArtistiForm(ModelForm): class Meta:

Lomakkeiden käsittely Lomakkeen esittämiseksi näkymässä lomake annetaan osaksi kontekstia ja lomakkeelta pyydetään sen HTML-esitys Lomaketta voi tarvittaessa muotoilla itse <form action="{% url demo.views.palaute %}" method="post"> {{ form }} <p><input type="submit" value="tallenna"></p> </form>

Lomakkeiden käsittely Esimerkki palautelomakkeen käsittelystä näkymässä def palaute(request): if request.method == 'POST': form = CommentForm(request.POST) if form.is_valid(): return HttpResponseRedirect('/kiitos/') else: form = CommentForm() return render_to_response( lomake.html', { 'form': form, })

Ylläpitosivusto Dajngon ylläpitosivuston avulla voidaan lisätä, selata, muokata ja poistaa sisältöä tietokannasta Ominaisuuksia: Click to edit Master text styles Second level Third level Fourth level Fifth level Haku Sisällön suodatus Uudelleenjärjestys valitun sarakkeen mukaan Ylläpitosivuston ulkoasua voi muuttaa sivupohjia ja tyylitiedostoa muokkaamalla

admin.py from django.contrib import admin from demo.models import Artisti, Julkaisu class ArtistiAdmin(admin.ModelAdmin): Click to edit Master text styles Second level Third level Fourth level Fifth level pass admin.site.register(artisti, ArtistiAdmin) class JulkaisuAdmin(admin.ModelAdmin): list_display = ('artisti', 'nimi') list_display_links = ('nimi',) search_fields = ['artisti nimi', 'nimi'] admin.site.register(julkaisu, JulkaisuAdmin)

Ylläpitosivusto

Djangon mukana tulevia sovelluksia Admin site Authentication Flatpages Comments Pagination Syndication feeds (RSS/Atom)

Poimintoja uusista ominaisuuksista 1.0 Uudelleen kirjoitettu ylläpitoliittymä Parannettu Unicode-tuki GeoDjango 1.1 ORM-parannuksia Admin actions 1.2 Tuki usean tietokannan käyttämiseen Mallin validointi Messages framework Oikeuksien määrittely objekti-tasolla Parannuksia sivupohjamoottoriin, mm. fiksu if-tagi

Djangolla toteutettuja sivustoja EveryBlock (www.everyblock.com) Bitbucket (www.bitbucket.org) Washington Post Lawrence.com Lisää osoitteessa www.djangosites.org

Linkkejä Django (http://djangoproject.com) The Django Book (http://djangobook.com) Django Users (http://groups.google.com/group/django-users) Django Snippets (http://djangosnippets.org) Django Developers (http://groups.google.com/group/django-developers)