Zaawansowany kurs języka Python



Podobne dokumenty
Kurs rozszerzony języka Python

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Zrąb webowy dla perfekcjonistów z terminami. autor: Kamil Adamczyk

Kurs rozszerzony języka Python

Programowanie w Ruby

Laboratorium nr 3 Podstawy Ruby on Rails

Chatter Aplikacja internetowa

Quiz Aplikacja internetowa

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Ruby

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Programowanie w Ruby

Kurs rozszerzony języka Python

Co tester może osiągnąć w 60 minut? Testowanie eksploracyjne i sterowane kontekstem.

Testowanie aplikacji. Kurs języka Ruby

Laboratorium 2. def detail(request, question_id): return HttpResponse("Patrzysz na pytanie %s." % question_id)

Modele. Najcz. Metoda unicode definiuje sposób wyświetlania obiektu w postaci tekstowej. BooleanField - pole logiczne, True/False

Serwer WWW na przykªadzie Django cz.1

Dokumentacja. Realizacja w portalu kalkulatora simple. (dane wprowadzane z klawiatury).

Kurs języka Python. Wykład 14. Marcin Młotkowski. 25 stycznia Python i Apache Pythonowe platformy aplikacyjne. Dystrybucja aplikacji w U*IX

Spis treści. Spis treści - 2

Technologie Informacyjne

MVC w praktyce tworzymy system artykułów. cz. 1

Programowanie w Ruby

Wybrane działy Informatyki Stosowanej

Sejm Rzeczypospolitej Polskiej Identyfikacja wizualna

Metaprogramowanie w Ruby

Podstawowe wykorzystanie Hibernate

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Lista ToDo Aplikacja internetowa

krótki dopisek np. z celem spotkania Miejsce na tytuł prezentacji


Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

CZERWIEC EKSPERYMENTARIUM CHOJNICE KSIĘGA ZNAKU

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Agenda spotkania: 1. Koncepcja funkcjonowania e-recepty 2. Podsumowanie pierwszych miesięcy z e-receptą 3. Internetowe Konto Pacjenta pacjent.gov.

MVC w praktyce tworzymy system artykułów. cz. 2

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Kurs języka Ruby. Ruby on Rails ActionPack

Aplikacje WWW - lab 5

Technologie internetowe ASP.NET Core. Paweł Rajba

Programowanie w Ruby

Zaawansowany kurs języka Python

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner


ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

akademia androida Składowanie danych część VI

Dokumentacja techniczna API systemu SimPay.pl

Manual Znaku Polskie Stowarzyszenie Ochrony Roślin

SYSTEM IDENTYFIKACJI WIZUALNEJ

Programowanie i projektowanie obiektowe

Ruby i Ruby on Rails. Mateusz Drożdżyński

Sphinx - system dokumentacji dla Pythona

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

ZNAK FIRMOWY EIP - PODRĘCZNIK

Aplikacje WWW - laboratorium

I.Wojnicki, Tech.Inter.

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Programowanie w Ruby

Ranking Centrów Handlowych II edycja. prezentacja wyników rankingu zrealizowanego dla Polskiego Stowarzyszenia Najemców Powierzchni Handlowych

Aplikacje internetowe - laboratorium

Zaawansowany kurs języka Python

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

media Blitz wydajne sytemy szablonów

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

System identyfikacji wizualnej jednostki organizacyjnej Powiatu Poznańskiego: Ośrodek Interwencji Kryzysowej w Kobylnicy

Bazy Danych i Usługi Sieciowe

Aplikacje WWW - laboratorium

Ćwiczenie nr 12: Tworzenie stron internetowych z użyciem języka HTML Wstęp

PROJEKT NA GRUNCIE kwp

Kompozycja Proceduralna

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Czysta architektura (nawet z Django!) Sebas an PyWaw 72

BiT-CiTY. księga znaku

System identyfikacji wizualnej jednostki organizacyjnej Powiatu Poznańskiego:

System identyfikacji wizualnej jednostki organizacyjnej Powiatu Poznańskiego:

Baza danych sql. 1. Wprowadzenie

Program szkolenia: Symfony, nowoczesny framework PHP

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

POWIATOWE CENTRUM POMOCY RODZINIE

Java Server Faces narzędzie do implementacji w wy prezentacji

WICKET VS. DJANGO. Leszek Gawron vs. Michał Leszczyński

ZESPÓŁ SZKÓŁ NR 2 W SWARZĘDZU

Księga Systemu Identyfikacji Wizualnej

System identyfikacji wizualnej jednostki organizacyjnej Powiatu Poznańskiego:

Liceum Ogólnokształcące im. Mikołaja Kopernika w Puszczykowie

System identyfikacji wizualnej jednostki organizacyjnej Powiatu Poznańskiego: Poradnia Psychologiczno-Pedagogiczna w Puszczykowie

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Facelets ViewHandler

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Transkrypt:

Środowisko Django początki 10 stycznia 2014

Plan wykładu 1 2

Plan wykładu 1 2

Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych.

Co to jest Django Oparty o Pythona framework do tworzenia aplikacji internetowych. Wzorowany na Ruby on Rails.

Podstawowe pojęcia Model Reprezentacja określonego typu danych, na podstawie modelu konstruuje się schemat bazy danych czy klasę.

Podstawowe pojęcia Model Reprezentacja określonego typu danych, na podstawie modelu konstruuje się schemat bazy danych czy klasę. View Implementacja akcji na danych (logika biznesowa).

Podstawowe pojęcia Model Reprezentacja określonego typu danych, na podstawie modelu konstruuje się schemat bazy danych czy klasę. View Implementacja akcji na danych (logika biznesowa). Template Sposób prezentacji danych (modeli) a także interakcji z użytkownikiem.

Specyfika aplikacji WWW Routing Powiązanie żądań HTTP z odpowiednim kodem (funkcją bądź metodą).

Uwagi techniczne Django współpracuje z Pythonem 2.*, rekomendowana wersja: od 2.5; w starszych wersjach: brak wsparcia dla Pythona 3.*; najnowsza wersja: 1.6;

Plan wykładu 1 2

Zadanie System zapisów studentów na zajęcia.

Bardziej szczegółowy opis Rodzaje danych Wykładowcy Studenci Zajęcia

Bardziej szczegółowy opis Rodzaje danych Akcje Wykładowcy Studenci Zajęcia Zapisywanie/wypisywanie się studentów na zajęcia; Administracja: dodawanie/usuwanie studentów i wykładowców

Na początek $ django-admin startproject wyklad $ cd wyklad $ python manage.py runserver

Na początek $ django-admin startproject wyklad $ cd wyklad $ python manage.py runserver Validating models... 0 errors found Django version 1.1.1, using settings wyklad.settings Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

Przypomnienie Template Sposób prezentacji danych (modeli) a także interakcji z użytkownikiem.

Funkcje w modułach hello view.py from django.http import HttpResponse def hello(request): return HttpResponse( akuku )

Funkcje w modułach hello view.py from django.http import HttpResponse def hello(request): return HttpResponse( akuku ) urls.py routing import hello view urlpatterns = patterns(, ( ˆhello/$, hello view.hello),...

Uwagi HttpResponse( akuku ) jako odpowiedź wysyła tylko tekst akuku, bez znaczników html; podany wzorzec pasuje tylko do /hello i do /hello/

Bardziej dynamiczne strony def hello(request): now = datetime.datetime.now() html = <html><body>witaj! html += Dziś mamy %s.</body></html> % now return (html)

Prawdziwe Djangowe szablony <html> <head><title>strona powitalna</title></head> <body> <h1>powitanie </h1> <p>szanowna Pani/Szanowny Pan {{ person_name }},</p> <p> Dziękujemy za odwiedzenie {{ company }} w dniu {{ termin date:"f j, Y" }}.</p> </body> </html>

Znaczniki, wyrażenia {{ zmienna }}

Znaczniki, instrukcje {% if wyrażenie %} {% else %} {% endif %} {% for item in item list %} {{ item }} {% endfor %}

Filtry Zmiana zmiennej przed wyświetleniem {{ zmienna filtr 1 filtr 2 }}

Renderowanie szablonów from django.template import Context, Template Budowanie szablonów szablon = Template( Mam na imię {{ name }}. )

Renderowanie szablonów from django.template import Context, Template Budowanie szablonów szablon = Template( Mam na imię {{ name }}. ) Renderowanie ustalenie kontekstu kontekst = Context({ name : Pyton }) szablon.render(kontekst) u Mam na imię Pyton

Zmienne i kontekst, dodatki szablon = Template( {{ osoba.imie }} ma lat {{ osoba.wiek }} ) kontekst = Context({ osoba : Osoba() })

Widoki a szablony Przypomnienie def hello(request): now = datetime.datetime.now() html = <html><body>witaj! html += Dziś mamy %s.</body></html> % now return HttpResponse(html)

Szablony i widoki prosta wersja def hello(request): now = datetime.datetime.now() t = <html><body>witaj! t += Dziś mamy {{ teraz }}.</body></html> szablon = Template(t) html = szablon.render(context({ teraz : now})) return HttpResponse(html)

Szablony i widoki System szablonów: definuje się katalog z szablonami w pliku settings.py szablony zwykle mają rozszerzenie.html

Użycie szablonu Wersja długa def hello(request): t = get template( osoba.html ) html = t.render(context({ osoba : Persona() })) return HttpResponse(html)

Użycie szablonu Wersja długa def hello(request): t = get template( osoba.html ) html = t.render(context({ osoba : Persona() })) return HttpResponse(html) Wersja krótka from django.shortcuts import render to response def hello(request): return render to response( osoba.html, { osoba : Persona() })

Porządkowanie szablonów Podkatalogi Można szablony umieszczać w podkatalogach: render to response( prezentacja/osoba.html, { osoba : Persona() })

Porządkowanie szablonów Podkatalogi Można szablony umieszczać w podkatalogach: render to response( prezentacja/osoba.html, { osoba : Persona() }) Uwaga: podkatalogi dotyczą katalogu wskazanego w settings.py.

Składanie stron <html> <body> {% include includes/header.html %} {% include "includes/nav.html" %} <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p> {% include "includes/footer.html" %} </body> </html>

Dziedziczenie szablonów Cel dziedziczenia budowanie serwisów o podobnym wyglądzie; unikanie powtarzania kodu html owego.

Szablon podstawowy <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> <h1>wykład z Pythona</h1> {% block content %}{% endblock %} {% block footer %} <hr> <p>dzięki że wpadłeś na mój wykład.</p> {% endblock %} </body> </html>

Dziedziczenie szablonów {% extends szablon.html %} {% block title %}Wstęp do Django {% endblock %} {% block content %} <p>dzisiaj będę ględził o Django</p> {% endblock %}

Na samym początku Utworzenie aplikacji $ python manage.py startapp zapisy

Na samym początku Utworzenie aplikacji $ python manage.py startapp zapisy Terminologia: projekt i aplikacja Aplikacja zaimplementowane funkcjonalności (modele, widoki etc.) Projekt aplikacja (lub aplikacje, tj. dodatkowe moduły) plus konfiguracja (szczegóły bazy danych, serwera WWW etc)

Efekt działania skryptu Utworzenie szkieletu aplikacji w katalogu zapisy szablon modeli; szablon widoków; i jeszcze inne...

Deklaracja modeli: zapisy/models.py from django.db import models class Wykladowca(models.Model): imie = models.charfield(max_length=40) website = models.urlfield() class Student(models.Model): imie = models.charfield(max_length=40) class Wyklad(models.Model): nazwa = models.charfield(max_length=140) wykladowca = models.foreignkey(wykladowca)

Weryfikacja poprawności modelu W pliku settings.py INSTALLED APPS = ( django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.sites, wyklad.zapisy, )

Weryfikacja poprawności modelu W pliku settings.py INSTALLED APPS = ( django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.sites, wyklad.zapisy, ) Konfiguracja bazy danych: settings.py DATABASE ENGINE = sqlite3 DATABASE NAME =./plik.db

Weryfikacja poprawności modelu W pliku settings.py INSTALLED APPS = ( django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.sites, wyklad.zapisy, ) Konfiguracja bazy danych: settings.py DATABASE ENGINE = sqlite3 DATABASE NAME =./plik.db $ python manage.py validate

Utworzenie struktury bazy danych Kontrola utworzenia tabel $ python manage.py sqlall zapisy CREATE TABLE "zapisy_wykladowca" ( "id" integer NOT NULL PRIMARY KEY,... CREATE TABLE "zapisy_wyklad" (... "wykladowca_id" integer NOT NULL REFERENCES "zapisy_wykladowca" ("id")

Konfiguracja bazy danych Utworzenie bazy danych $ python manage.py syncdb

Konfiguracja bazy danych Utworzenie bazy danych $ python manage.py syncdb Domyślnie (jeśli nie wykomentujemy modułów z settings.py) włączany jest system autentykacji i zakładane jest konto administratora.

Dostęp do danych Porada Można skorzystać z shella Djangowego python manage.py shell

Tworzenie obiektów z modelu from zajecia.models import Student s1 = Student(imie= Ewa, website= ) s1.save() s2 = Student(imie= Adam, website= ) s2.save() lista stud = Student.objects.all() >>> [<Student: Student object>, <Student: Student object>]

Podpowiedzi Podpowiedź 1: jednoczesne tworzenie i zapisywanie s1 = Student.objects.create(imie= Ewa, website= )

Podpowiedzi Podpowiedź 1: jednoczesne tworzenie i zapisywanie s1 = Student.objects.create(imie= Ewa, website= ) Ładniejsze informacje class Student(models.Model):... def unicode (self): return self.name

Operacje na danych Modyfikacja p1.imie = Ania p1.save()

Operacje na danych Modyfikacja p1.imie = Ania p1.save() Filtrowanie danych lista = Student.objects.filter(imie= Ania )

Operacje na danych Modyfikacja p1.imie = Ania p1.save() Filtrowanie danych lista = Student.objects.filter(imie= Ania ) Pobranie pojedynczego elementu student = Student.objects.get(id=11)

Operacje na danych Modyfikacja p1.imie = Ania p1.save() Filtrowanie danych lista = Student.objects.filter(imie= Ania ) Pobranie pojedynczego elementu student = Student.objects.get(id=11) Usuwanie s1.delete() Student.objects.all().delete()