Kurs rozszerzony języka Python

Podobne dokumenty
Zaawansowany kurs języka Python

Kurs rozszerzony języka Python

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

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Kurs rozszerzony języka Python

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

Quiz Aplikacja internetowa

Serwer WWW na przykªadzie Django cz.1

Chatter Aplikacja internetowa

Laboratorium nr 3 Podstawy Ruby on Rails

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Testowanie aplikacji. Kurs języka Ruby

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

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

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

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

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

Wybrane działy Informatyki Stosowanej

Programowanie w Ruby

Metaprogramowanie w Ruby

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

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

Aplikacje WWW. Krzysztof Ciebiera. 3 kwietnia 2014

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

Podstawowe wykorzystanie Hibernate

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009


Programowanie i projektowanie obiektowe

Kurs języka Ruby. Ruby on Rails ActionPack

Technologie internetowe ASP.NET Core. Paweł Rajba

Spis treści. Spis treści - 2

Technologie Informacyjne

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

Lista ToDo Aplikacja internetowa

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

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Aplikacje WWW - lab 5

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

Programowanie w Ruby

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

Sejm Rzeczypospolitej Polskiej Identyfikacja wizualna

Program szkolenia: Symfony, nowoczesny framework PHP

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

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

KARTA PRZEDMIOTU. Warsztaty z Ruby on Rails. Ruby on Rails Workshop

Zaawansowany kurs języka Python


CZERWIEC EKSPERYMENTARIUM CHOJNICE KSIĘGA ZNAKU

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

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

I.Wojnicki, Tech.Inter.

Sphinx - system dokumentacji dla Pythona

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

e_talent innowacyjna aplikacja webowa do zarządzania rozwojem pracowników w organizacji Zespół ForUnit

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

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

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

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

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

akademia androida Składowanie danych część VI

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Wykład :45 BD-1 W_3

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Programowanie w Ruby

media Blitz wydajne sytemy szablonów

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

TDD w Django South Sorl Haystack + Whoosh Małe, a cieszy Deployment Koniec. Wspomagacze Django. Jan Filipowski. 25 maja 2010

Zaawansowany kurs języka Python

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Dokumentacja techniczna API systemu SimPay.pl

Baza danych do przechowywania użytkowników

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

1 Wprowadzenie do J2EE

Wzorce prezentacji internetowych

Manual Znaku Polskie Stowarzyszenie Ochrony Roślin

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

SYSTEM IDENTYFIKACJI WIZUALNEJ

Baza danych sql. 1. Wprowadzenie

Tworzenie i wykorzystanie usług sieciowych

Kompozycja Proceduralna

Aplikacje WWW - laboratorium

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

ZNAK FIRMOWY EIP - PODRĘCZNIK

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Testy aplikacji webowych

Aplikacje internetowe - laboratorium

petycja-norweskie Documentation

Czym jest Ruby on Rails?

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

Backend Administratora

Transkrypt:

Środowisko Django początki 5 stycznia 2018

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.

Zamierzenie twórców (Adrian Holovaty, Simon Willison) Framework webowy dla perfekcjonistów (z terminami)

Zalety wygodne definiowanie modeli, widoków, kontrolerów; czytelny podział kodu; wsparcie dla testowania; system cache; wbudowana autentykacja; nacisk na odporność na ataki.

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 Wersje Najnowsza wersja: 2.0.1 (styczeń 2018). Współpracuje z Pythonem 2.7, 3.*

Projekt Kolekcja różnych aplikacji wraz z konfiguracją (baza danych, konfiguracja www etc). Aplikacja Kod realizujący jakąś funkcjonalność.

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.

Wyjaśnienie django-admin startproject wyklad Tworzy katalog wyklad i tworzy tam szkielet projektu.

Wyjaśnienie django-admin startproject wyklad Tworzy katalog wyklad i tworzy tam szkielet projektu. manage.py To ważny plik służący do zarządzania projektem.

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 HttpResponse(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()