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

Σχετικά έγγραφα
μ μ «μ»

Περιγραφή του EcoTruck

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Web εφαρμογή με χρήση LDAP και SMTP Server

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

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

Injection Attacks. Protocol Host FilePath. field1=valuex&field2=valuey. Query String. Web server HTTP GET.

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Δρ. Δημήτριος Α. Κουτσομητρόπουλος. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Α.Τ.Ε.Ι. Πάτρας

Εφαρµογές διαδικτύου µε PHP

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

Η HTML χρησιμοποιεί εντολές που ονομάζονται HTML tags δίνοντας εντολές στους Web browsers για το πώς να εμφανίζουν την κάθε ιστοσελίδα.

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

Λευτέρης Κουμάκης ΠΟΛΥΜΕΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΣΤΗΝ ΥΓΕΙΑ

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Ρυθμίσεις εγκατάστασης ονόματος χώρου σε πίνακα ελέγχου plesk

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

Web Programming for Dummies

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

PHP/MySQL και Project

SOAP API. Table of Contents

Α.Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας

Τεχνολογίες Διαδικτύου

Κατανεμημένα Συστήματα. Javascript LCR example

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

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

Θέμα Πτυχιακής: ΔΙΑΔΙΚΑΣΙΑ ΠΙΣΤΟΠΟΙΗΣΗΣ ΧΡΗΣΤΩΝ ΜΕΣΩ PHP!

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην HTML. Άννα Κεφάλα Παναγιώτα Μιχόλια

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ. Κεφάλαιο 5. Αλληλεπιδραστικές ιστοσελίδες (χρήση ετικέτας <FORM> και η τεχνική CGI)

How to register an account with the Hellenic Community of Sheffield.

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

CYTA Cloud Server Set Up Instructions

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ρύθμιση Εξυπηρετητή Apache σε Ubuntu Linux

Προγραμματιστικές Εφαρμογές στο Διαδίκτυο Εργαστήριο 5

Προγραμματισμός Διαδικτύου ΕΡΓΑΣΤΗΡΙΟ. Τμ. ΔΕ- Χειμ

Τεχνικός Εφαρμογών Πληροφορικής

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

Μηχανή αναζήτησης βασισμένη σε AJAX και Soundex. Πτυχιακή Εργασία

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

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

HOWTO instal Joomla by A. Andreatos

Προγραμματισμός Παγκόσμιου Ιστού

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

Κεφάλαιο 1: Η βάση δεδομένων... 15

ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ Κ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : Κατασκευή Ηλεκτρονικού Καταστήματος (e-shop) Σπουδαστές:

databases linux - terminal (linux / windows terminal)

5 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: προχωρημένα θέματα PHP

ΑΠΟΘΕΤΗΡΙΟ ΕΦΑΡΜΟΓΩΝ ΥΠΠΕΘ ΚΑΙ ΕΠΟΠΤΕΥΟΜΕΝΩΝ ΦΟΡΕΩΝ (git.minedu.gov.gr)

Προγραμματισμός Παγκόσμιου Ιστού

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

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

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

5 η Διάλεξη Python - Αρχεία

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

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

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

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

Υπηρεσία Πληροφορικών Συστημάτων Τομέας Διαχείρισης Συστημάτων και Εφαρμογών

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

Σχεδιασμός Βάσεων Δεδομένων

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

Παρουσίαση PHP. Μιχάλης Ζήσης GreekLUG

Introduction to Java. Module 6: Class Diagrams and Use case Diagrams. Prepared by Costantinos Costa for EPL 233

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ PHP

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

στην πλευρά του εξυπηρετητή

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

ΕΠΛ 012. JavaScripts

ΕΓΚΑΤΑΣΤΑΣΗ ΣΤΟΙΒΑΣ LAMP (Linux-Apache-MySQL-php) ΣΤO UBUNTU. ΑΑ, Ιαν. 2013

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 1 17/01/2012

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

Python 2. IT. ture/hardware as a Service) PaaS (Platform as a Service) 1. Web. Python Web. Operating System (OS) (DB) 2.1 IT IT.

Υπάρχουν δύο αρχεία που σχετίζονται με τα άρθρα. Αυτά είναι article.tpl και authorsarticle.tpl.

Τεχνολογίες Ανάπτυξης Εφαρμογών στο WEB

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ρύθμιση λογαριασμού αποστολής Εmail. Η Google χρησιμοποιεί πλέον το μηχανισμό xoauth2 για την πιστοποίηση χρηστών gmail.

Σύγχρονα εργαλεία και τεχνολογίες ανάπτυξης I.S. Το Microsoft.NET

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Εξυπηρετητής Apache

Εγκατάσταση IIS (Internet Information Server) 7.0 / 7.5 / 8.0

Network Address Translation (NAT)

WEB HTML. Web HTML MIDI. Web 5.1: HTML LAN

Application... 4 Java Development Kit... 4 Android SDK... 5 Android Studio... 6 Genymotion... 8 ια ο Web Panel... 10

Ετικέτες HTML. <!-->: Τα σχόλια χρησιμοποιούνται για να γράφουμε σημειώσεις μέσα στον

Εγκατάσταση λογαριασμού ηλεκτρονικού ταχυδρομείου στο MICROSOFT OUTLOOK

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Transcript:

Web Development με Python Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python Βασίλης Παπαβασιλείου <el03020@mail.ntua.gr>, Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ

Python Χαρακτηριστικά Interpreted Αντικειμενοστραφής Πολλαπλά Paradigms Δυναμικό Σύστημα Τύπων Αυτόματη Διαχείριση Μνήμης Πολλά Διαθέσιμα Modules Υλοποιήσεις Cpython Jython (Java Platform) IronPython (.NET)

Apache Τεχνολογίες Modules Υποστήριξη Γλωσσών Προγραμματισμού Server Side (Perl, Python, PHP,...) Authentication SSL/TLS Proxy Virtual Hosts 58.8% του Web Apache License (Ελεύθερη, όχι CopyLeft)

mod_python Φροντίζει για τη διασύνδεση του Apache με την Python, γρηγορότερα από CGI Υλοποιεί Handlers του Apache Publisher Handler: Υψηλού Επιπέδου, δεν ασχολούμαστε με τις λεπτομέρειες του HTTP Παράδειγμα: Αίτηση για το http://www.example.com/test.py/hello αντιστοιχεί σε κλήση της συνάρτησης hello στο αρχείο test.py

Διασύνδεση Χρήστης (Web Browser) HTTP/ HTTPS Apache (HTTP Server) mod_python Python DB-API DBMS

Ρύθμιση Apache # /etc/apache/httpd.conf LoadModule python_module libexec/apache2/mod_python.so <Directory /path/to/dir> SetHandler mod_python PythonHandler mod_python.publisher PythonDebug on </Directory>

Γειά σου, Κόσμε # hello_world.py header = <html><body> footer = </body></html> def index(req): return header + <p>hello world</p> + footer

Γειά σου, Κόσμε v2 # hello_world.py header = <html><body> footer = </body></html> def hello(req, name = None): if name: #!= None return %s<p>hello %s</p>%s % ( header, name, footer) # url: $SERVER/hello_world.py/hello?name=$NAME return %s<p>hello world</p>%s % ( header, footer)

Εισαγωγή Δεδομένων (i) <html> <body> <p>please provide feedback below:</p> <p> <form action="form.py/email" method="post"> Name: <input type="text" name="name"><br /> Email: <input type="text" name="email"><br /> Comment: <textarea name="comment" rows=4 cols=20> </textarea><br /> <input type="submit"> </form> </p> </body> </html>

Εισαγωγή Δεδομένων (ii) import smtplib WEBMASTER = "webmaster@localhost" # webmaster e-mail SMTP_SERVER = "localhost" # your SMTP server MAIL_FMT = """\ From: %s Subject: feedback To: %s I have the following comment: %s Thank You, %s """

Εισαγωγή Δεδομένων (iii) def email(req, name, email, comment): # make sure the user provided all the parameters if not (name and email and comment): return "A required parameter is missing, \ please go back and correct the error" # create the message text msg = MAIL_FMT % (email, WEBMASTER, comment, name) # send it out conn = smtplib.smtp(smtp_server) conn.sendmail(email, [WEBMASTER], msg) conn.quit() # provide feedback to the user return """<html><body> <p>dear %s, thank you for your input.</p> </body></html>""" % name

Authentication # hidden_page.py def auth (req, user, password): if user == admin and password == secret : return True return False def access (req, user): if user == admin : return True return False header = <html><body> footer = </body></html> def hello(req): return header + <p>this message is hidden</p> + footer

Διασύνδεση με DBMS Τυποποίηση DB-API MySQL: MySQLdb PostgreSQL PyGreSQL psycopg SQLite pysqlite Module connection.py, κλάση client

Simple Blog (i): SQL Table -- creating table CREATE TABLE stories ( number serial NOT NULL, title character varying(64) NOT NULL, published date DEFAULT ('now'::text)::date NOT NULL, message text ); -- new entry INSERT INTO stories (title, message) values ( title 1, message 1 ) -- table structure -- number title published message -- 1 Ημερίδα I.L.U.G. 20070604 Η ομάδα Χρηστών... -- 2 Συνάντηση Αύριο 20070604 Αύριο, Τρίτη... -- 3 Ανακοίνωση 20070607 Η κοινότητα...

Simple Blog (ii): connection.py $ python >>> from connection import client >>> cnx = client( lamp, vasilis, hidden ) >>> cnx.executea( select * from stories ) [[1, 'Ημερίδα I.L.U.G', '2007-06-04', 'Η ομάδα χρηστών...'], [2, 'Συνάντηση Αύριο', '2007-06-04', 'Αύριο, στις 15:00...'], [3, 'Ανακοίνωση', '2007-06-14', 'Η κοινότητα...']] >>> cnx.titles() ['number', 'title', 'published', 'message']

Simple Blog (iii): Python # simple_blog_lib.py import connection class generic_page: # snipped header, footer, return_html def init (self, **kwargs): self. dict.update(kwargs) def _post_to_html(id, title, date, text): return """<h4>%s</h4> <p class="post_date">%s</p> <div class="post_body">%s</div> """ % (title, date, text)

Simple Blog (iv): Python # simple_blog.py (continued) class blog_page(generic_page): def return_html(self, req): hdr = generic_page.header % (self.title, self.title, self.subtitle) entries_str =.join([_post_to_html(*a) for a in \ db.execute( select * from stories )]) return hdr + entries_str + generic_page.footer blog_obj = blog_page(title = title, subtitle = subtitle ) index = blog_obj.return_html

Σύνδεσμοι http://www.python.org http://www.byteofpython.info http://www.diveintopython.org http://httpd.apache.org http://www.modpython.org http://www.pygresql.org http://www.postgresql.org http://www.djangoproject.com