Εισαγωγή στο django. Αλέξανδρος Αλτάνης. 21 Οκτωβρίου 2010

Σχετικά έγγραφα
Περιγραφή του EcoTruck

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Εισαγωγή στα Αντικείμενα

Προγράμματα με δομή Κληρονομικότητας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Αντικειµενοστρεφής Προγραµµατισµός

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

JOOMLA CMS ΒΑΣΙΚΗ ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ (PART I)

Πληρουορική Γ Γσμμασίοσ

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

Βασικά Στοιχεία της Java


ASPA: A translator from ASP to PHP

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Βασικά Στοιχεία της Java

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

Κλάσεις στην Python. Δημιουργία κλάσεων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Κλάσεις στην Python. Δημιουργία κλάσεων

Βασικά Στοιχεία Python 3

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ

ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Εισαγωγή στον Προγραμματισμό

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

ιαχείριση Πληροφοριών στο ιαδίκτυο

Εργαστήριο #10 (Ε10) 1

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

7-22 Οκτωβρίου Μία γιορτή δημιουργίας με κώδικα. Europe Code Week

2.1 Αντικειµενοστρεφής προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΜΕΤΑΠΤΥΧΙΑΚΟ ΤΜΗΜΑ ΣΠΟΥ ΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Εισαγωγή στον Προγ/μό Υπολογιστών

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

Θέματα Προγραμματισμού Η/Υ

Γλωσσική Τεχνολογία. Object-Orientation in Python

Εντολές ελέγχου ροής if, for, while, do-while

FAIL PASS PASS οριακά

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

Θέματα Προγραμματισμού Η/Υ

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Επιβλέπων Καθηγητής : Τσιαντής Λεωνίδας Φοιτητής : Μακρής Γεώργιος

ΕΠΛ 012. JavaScripts

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Εισαγωγή στην ASP.NET. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας 4.0

Τµήµα Πληροφορικής. Υλοποίηση LRU Cache ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ - ΕΡΓΑΣΙΑ 4. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Γενικά περί Caching

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

1. O FrontPage Explorer

Προγραµµατισµός Ι (ΗΥ120)

Αστέριος Κατσιφοδήμος Γιώργος Νικολάου Κώστας Βρυώνη. ΕΠΛ 428 Προγραμματισμός Συστημάτων 16/04/07

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

Η γλώσσα Fortress. Γιώργος Κορφιάτης. Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού, Εργαστήριο Λογισμικού, ΕΜΠ ...

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

B. Ενσωμάτωση Ιθαγενών Μεθόδων

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

BibConvert μετατροπές LOM

Ψηφιακή ανάπτυξη. Course Unit #1 : Κατανοώντας τις βασικές σύγχρονες ψηφιακές αρχές Thematic Unit #1 : Τεχνολογίες Web και CMS

Πώς τροποποιούμε το Invenio;

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

ΚΕΦΑΛΑΙΟ 3. Εκφράσεις, τελεστές, σχόλια. 3.1 Εισαγωγή

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML. Decode, ISSEL. Θεοδόσης Σουργκούνης Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

PYTHON ΑΣΚΗΣΕΙΣ ΣΤΟΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΣΕ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΣΙΝΤΖΙΛΙΔΑΣ ΕΚΠΑΙΔΕΥΤΙΚΟΣ ΚΛ. ΠΕ86 ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑΛ ΤΗΝΟΥ ΤΟΜΕΑΣ: ΠΛΗΡΟΦΟΡΙΚΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Transcript:

21 Οκτωβρίου 2010

Προαπαιτούµενα Λίγες γνώσεις προγραµµατισµού Μια ιδέα από python Μια δόση γνώσεων ϐάσεων δεδοµένων

Προαπαιτούµενα Λίγες γνώσεις προγραµµατισµού Μια ιδέα από python Μια δόση γνώσεων ϐάσεων δεδοµένων Επιθυµητά: Να έχετε ϕτιάξει µια σελίδα µε ϐάση δεδοµένων µε HTML, XML, XSL, PHP και να τα µισήσατε ϑανάσιµα Λίγες γνώσεις από Monty Python

Μια ιστοσελίδα στην απλή µορφή της: <html> <head> <title>a page in the world wide web!</title> </head> <body> <p> Look ma! Im famous!!! I gotta wepbage thingy! <h1>weapons of the spanish Inquisitoin (there are 3):</h1> <ul> <li>surprise <li>fear <li>ruthless efficiency </ul> </body> </html> Καθόλου δυναµική.

Καλύτερα παραδείγµατα Σελίδες µε: περιεχόµενο που αλλάζει συχνά, π.χ. blog. περιεχόµενο που ενηµερώνεται αυτόµατα (π.χ. χρηµατιστήριο, καιρός κτλ.) χρήστες που ανεβάζουν περιεχόµενο

Βασική ιδέα Ιστορία Ο server, αντί να παραδίδει στατικές σελίδες, να τρέχει κώδικα που να τις παραγάγει δυναµικά.

Ιστορία Ιστορία.

1 Εξ ολοκλήρου σε python 2 DRY principle 3 Είναι διαχωρισµένο σε αυτόνοµα κοµµάτια (modular) 4 Ακολουθεί το µοντέλο MVC (το ονοµάζει MTV -,, ) Μοντέλο η ϐάση δεδοµένων. Αντιστοιχίζεται σε αντικείµενα της Python µέσω των οποίων η εφαρµογή επικοινωνεί µε αυτή. Οψη κώδικας που κάνει επιλογή και επεξεργασία των δεδοµένων που Ϲητάει ένας χρήστης της εφαρµογής (ένας επισκέπτης της ιστοσελίδας) Πρότυπο µια σελίδα που περιγράφει πως ϑα παρουσιαστούν τα δεδοµένα στο χρήστη Απλό παράδειγµα: απλή εφαρµογή σφυγµοµετρήσεων (κλεµµένη από το tutorial).

Ορισµός µοντέλου (models.py) from.db import models import datetime class Poll(models.): question = models.charfield(max_length=200) pub_date = models.datetimefield( date published ) def unicode (self): return self.question def was_published_today(self): return self.pub_date.date() == datetime.date.today() class Choice(models.): poll = models.foreignkey(poll) choice = models.charfield(max_length=200) votes = models.integerfield() def unicode (self): return self.choice

Αντικείµενα Αντιστοιχούν σε ένα πίνακα της ϐάσης ιαθέτουν τον manager objects, ο οποίος χρησιµοποιείται για queries στη ϐάση Περικλείουν όλη τη γνώση για τα δεδοµένα της εφαρµογής validation κτλ. Επιτρέπουν τη δηµιουργία, αλλαγή και διαγραφή εγγραφών από τη ϐάση µέσα από κώδικα python

URLs Πως όµως ϑα προσπελάσει τα δεδοµένα ο χρήστης της εφαρµογής;

URLs (urls.py) from.conf.urls.defaults import * urlpatterns = patterns(, (r ˆpolls/$, polls.views.index ), (r ˆpolls/(?P<poll_id>\d+)/$, polls.views.detail ), (r ˆpolls/(?P<poll_id>\d+)/results/$, polls.views.results ), (r ˆpolls/(?P<poll_id>\d+)/vote/$, polls.views.vote ) )

Τις αιτήσεις ϑα εξυπηρετήσει ένα view. Για παράδειγµα, την αίτηση για τη σελίδα /polls/, ϑα την εξυπηρετήσει το παρακάτω view: (views.py) from.http import HttpResponse def index(request): return HttpResponse("Hello, world. You re at the index.") Ο πελάτης ϑα δει µια σελίδα που ϑα γράφει Hello, world. You re at the index.

Κάνοντας το index χρήσιµο Θέλουµε το index να δείχνει µια λίστα µε τις τρέχουσες σφυγµοµετρήσεις: Σχήµα: Απαίσιο screenshot

Ενα πρώτο ϐήµα (views.py) from polls.models import Poll from.http import HttpResponse def index(request): latest_poll_list = Poll.objects.all().order_by( -pub_date )[:5] output = "<br />".join([p.question for p in latest_poll_list]) return HttpResponse(output)

Καλύτερα όµως µε templates (views.py) from.template import Context, loader from polls.models import Poll from.http import HttpResponse def index(request): latest_poll_list = Poll.objects.all().order_by( -pub_date )[:5] t = loader.get_template( polls/index.html ) c = Context({ latest_poll_list : latest_poll_list, }) return HttpResponse(t.render(c))

Το template (polls/index.html) {% if latest_poll_list %} <ul> {% for poll in latest_poll_list %} <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li> {% endfor %} </ul> {% else %} <p>no polls are available.</p> {% endif %}

Μερικά στοιχεία του template system του : Tags Τα tags υλοποιούν λειτουργίες όπως control-flow και κληρονοµικότητα. κ.ά. {{ variable }}: αντικαθίσταται µε την τιµή της µεταβλητής variable {% if condition %}... {% else %}... {% endif %}: λειτουργεί σαν if. {% for member in collection %}... {% endfor %}: λειτουργεί σαν for-each. {% cycle item1 item2 %}: κάθε ϕορά που συναντάται, αντικαθίσταται µε µία από τις τιµές της, κυκλικά. Χρησιµοποιείται µέσα σε for loops π.χ. για να παραγάγει εναλλασσόµενες γραµµές σε έναν πίνακα. {% block name %}, {% extends template path %}: χρησιµοποιούνται για ορισµό κληρονοµικότητας (για µια άλλη παρουσίαση)

Περισσότερα για τις µεταβλητές Μια µεταβλητή συχνά είναι dictionary ή εγγραφή από τη ϐάση δεδοµένων. Το template system αναγνωρίζει σύνταξη της µορφής variable.member.member... Σε κάθε τελεία, το δοκιµάζει µε τη σειρά: 1 Dictionary lookup 2 Attribute lookup 3 Method call 4 List-index lookup Παράδειγµα: σε ένα αντικείµενο Poll, µε όνοµα poll, poll.question είναι η ερώτηση του Poll.

Μερικά στοιχεία του template system του : Filters Τα filters αλλάζουν το περιεχόµενο µεταβλητών. κ.ά. {{ variable lower }}: µετατρέπει το περιεχόµενο της µεταβλητής σε µικρά γράµµατα. {{ variable filesizeformat }}: µετατρέπει αριθµούς σε human-readable µεγέθη αρχείων (1024 σε 1 ΜΒ κτλ.) {{ variable length }}: τυπώνει το µήκος της µεταβλητής (είτε είναι string είτε list ).

in a thousand words

Περισσότερες πληροφορίες: official site tutorial the book (second edition)

.