Django. Æwiczenia praktyczne



Podobne dokumenty
Rozliczenia z NFZ. Ogólne założenia. Spis treści

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

SZABLONY KOMUNIKATÓW SPIS TREŚCI

Konfiguracja historii plików

elektroniczna Platforma Usług Administracji Publicznej

Automatyzacja procesu publikowania w bibliotece cyfrowej

Microsoft Management Console

I. Zakładanie nowego konta użytkownika.

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

Kto tak naprawdę odwiedza Twoją stronę?

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Archiwum Prac Dyplomowych

Spring MVC Andrzej Klusiewicz 1/18

Instrukcja Obsługi STRONA PODMIOTOWA BIP

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

INSTRUKCJA WebPTB 1.0

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom podstawowy)

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Centrum Informatyki "ZETO" S.A. w Białymstoku. Instrukcja użytkownika dla urzędników nadających uprawnienia i ograniczenia podmiotom w ST CEIDG

Zarządzanie Zasobami by CTI. Instrukcja

Laboratorium Kierunki Rozwoju oprogramowania REST, Django

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Instrukcja programu PControl Powiadowmienia.

STRONA GŁÓWNA SPIS TREŚCI. Zarządzanie zawartością stron... 2 Tworzenie nowej strony... 4 Zakładka... 4 Prawa kolumna... 9

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Warsztat naukowca a problem formatu informacji bibliograficznej generowanej przez systemy informacyjne. Remigiusz Sapa IINiB UJ

PERSON Kraków

Strona główna góra

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Praca na wielu bazach danych część 2. (Wersja 8.1)

Instrukcja wprowadzania ocen do systemu USOSweb

INSTRUKCJA Panel administracyjny


Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Wtedy wystarczy wybrać właściwego Taga z listy.

Specyfikacja techniczna banerów Flash

Użytkowanie elektronicznego dziennika UONET PLUS.

Pierwsze logowanie do systemu I-Bank

Logowanie do systemu Faktura elektroniczna

System kontroli wersji SVN

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Poniżej instrukcja użytkowania platformy

Platforma Aukcyjna Marketplanet. Podręcznik Oferenta. Aukcja dynamiczna zniŝkowa

Linux LAMP, czyli Apache, Php i MySQL

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Instrukcja logowania do aplikacji ING Agent

WYKŁAD 1 SYSTEMY CMS CZĘŚĆ 1

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

System do kontroli i analizy wydawanych posiłków

Metody opracowywania dokumentów wielostronicowych. Technologia Informacyjna Lekcja 28

VinCent Office. Moduł Drukarki Fiskalnej

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

MySource Matrix CMS - PROSTY INTERFEJS UŻYTKOWNIKA. INSTRUKCJA ver 1.2

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

Rozdzia 3. Kalendarz wprowadzanie dat do arkusza Obs uga formularzy Uwagi dotycz ce obs ugi okien dialogowych kalendarza...

Fabian Stasiak. Przyk adowe wiczenie z podr cznika: Zbiór wicze. Autodesk Inventor Kurs podstawowy.

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

SSK - Techniki Internetowe

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

Zaloguj się do Moje GS1. wprowadź dane o swoich lokalizacjach w mniej niż 5 minut!

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

WordPad. Czyli mój pierwszy edytor tekstu

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

Zestaw skróconych instrukcji dotyczący najważniejszych operacji w programie Merkury Quattro.

Zaawansowany kurs języka Python

Odtwierdzenie OR 1.0 dodatek do Symfonia Finanse i Ksi gowo dla 1 firmy

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

REGULAMIN PRZESYŁANIA I UDOSTĘPNIANIA FAKTUR W FORMIE ELEKTRONICZNEJ E-FAKTURA ROZDZIAŁ 1. I. Postanowienia ogólne

REGULAMIN PROMOCJI MIX LAN 2PAK. 1 Postanowienia ogólne

Integracja systemów, integracja procesów

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Zaznaczając checkbox zapamiętaj program zapamięta twoje dane logowania. Wybierz cmentarz z dostępnych na rozwijalnej liście.

INTEGRATOR Instrukcja instalacji, konfiguracji.

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

WSTĘP. Delphi. DDGX210(PL) - Edycja 1 du 01/

FRAKTAL STUDIO CELNE

Jak skonfigurowad Media Gallery do obsługi sterowania gestami

Systemy mikroprocesorowe - projekt

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Zmiany w programie C GEO v. 6.5

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

Przewodnik Google Cloud Print

Laboratorium 7 Blog: dodawanie i edycja wpisów

Platforma do obsługi zdalnej edukacji

Instrukcja użytkownika Akademickiego Systemu Archiwizacji Prac dla nauczyciela akademickiego

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Instrukcja obsługi Zaplecza epk dla Pracowników Instytucji w zakresie administracji danymi instytucji

Elementy i funkcjonalno

INSTRUKCJA KONFIGURACJI PRZEGLĄDARKI INTERNET EXPLORER

Instrukcja. 1 Zamawiając kuriera. W Paczkomacie lub POK. 3 Nadając list polecony. nadawania przesyłek z Allegro: (Punkt Obsługi Klienta)

INFORMATOR TECHNICZNY WONDERWARE

PRESTASHOP INTEGRATOR XL BY CTI INSTRUKCJA

Formularz rzeczowo-cenowy PAKIET 2

Transkrypt:

Django. Æwiczenia praktyczne Autor: Piotr Maliñski ISBN: 978-83-246-1888-0 Format: A5, stron: 88 Wykorzystaj mo liwoœci Django w swoim projekcie! Jak zainstalowaæ Django? Jak skonfigurowaæ framework i dopasowaæ go do swoich potrzeb? Jak uruchomiæ Django na Google App Engine? Django nie jest kolejnym frameworkiem napisanym w jêzyku PHP. To elitarne rozwi¹zanie, wykorzystuj¹ce jêzyk Python, oparte na wzorcu projektowym MVC. Pierwotnie Django zosta³o opracowane z myœl¹ o stronach prasowych, z du ¹ iloœci¹ newsów. Pierwsza publiczna wersja ujrza³a œwiat³o dzienne w 2005 roku. Od tego czasu Django odnotowuje ci¹g³y wzrost popularnoœci, a wachlarz jego zastosowañ znacznie siê rozrós³! Dziêki tej ksi¹ ce równie Ty bêdziesz móg³ wykorzystaæ ten framework w swoim projekcie! Sprawdzona formu³a ksi¹ ki, k³ad¹ca nacisk na æwiczenia, pozwoli Ci b³yskawicznie opanowaæ sposób instalacji oraz stworzyæ i skonfigurowaæ Twój w³asny projekt. Dowiesz siê tak e, jak obs³u yæ b³êdy oraz kana³y RSS czy te wygenerowaæ pliki PDF. Ponadto nauczysz siê konfigurowaæ serwery Apache 2 oraz Nginx. Æwiczenia zawarte w tej ksi¹ ce pozwol¹ Ci szybko i przyjemnie wdro yæ Django w Twoim projekcie aplikacji WWW! Sposób instalacji Django Tworzenie nowego projektu Konfiguracja projektu Wykorzystanie panelu administracyjnego Mapowanie widoków Obs³uga formularzy Reagowanie na b³êdy Udostêpnienie kana³u RSS Generowanie plików PDF Zasady konfiguracji serwera Apache 2 z mod_python Konfiguracja serwera Nginx Przegl¹d firm oferuj¹cych hosting z obs³ug¹ Pythona Django i Google App Engine Stwórz wydajn¹ i przyjemn¹ w zarz¹dzaniu witrynê WWW!

Spis tre ci Rozdzia 1. Wprowadzenie do Django 5 Django i Python 5 Dlaczego Django? 6 Django w sieci 6 Wymagana wiedza 7 Zawarto ksi ki 7 Rozdzia 2. Instalacja Django 9 Rozdzia 3. Pierwsze kroki 13 Rozdzia 4. Tworzenie aplikacji 17 Rozdzia 5. Ksi ga kucharska 47 Rozdzia 6. Hosting aplikacji Django 55 Konfiguracja serwera HTTP 55 Hosting projektów Django 57 Wykorzystywanie aplikacji i kodu z projektów Django 59 Rozdzia 7. Django i Google App Engine 61 Rozdzia 8. Przegl d projektów i serwisów 75 Rozdzia 9. Serwisy po wi cone Django 79 Rozdzia 10. Inne frameworki WWW napisane w Pythonie 83

5 Ksi ga kucharska W rozdziale tym przedstawione zostan ró ne rozwi zania, fragmenty kodu i ciekawe aplikacje Django. 5.1 Obs uga b dów Ustawienie w settings.py zmiennej DEBUG na False spowoduje, e zamiast tre ci wyj tków wy wietlany b dzie szablon 500.html, a w przypadku braku podstrony 404.html. Zazwyczaj jednak zachodzi potrzeba obs ugi cz ci b dów na poziomie widoków, np. gdy brakuje kategorii o podanym odno niku i chcemy wy wietli stosowny komunikat. W przypadku Django, czy te w ogóle Pythona, jest to do atwe do zaimplementowania przy u yciu wyj tków. B d one generowane przy pobieraniu rekordu za pomoc metody GET, je eli dany obiekt nie b dzie istnia. 1. Otwórz plik news/views.py i w widoku show_news zmie wiersz pobierania wiadomo ci na: try: news = News.objects.get(slug=slug) except: return render_to_response('error.html', 'error': 'Strona nie istnieje', context_instance=requestcontext(request))

48 Django wiczenia praktyczne 2. Stwórz szablon error.html o kodzie: % extends "base.html" % % block main % error % endblock % 3. Otwórz stron z dowoln wiadomo ci, a nast pnie zmie jej slug na b dny. W przypadku gdy wiadomo o podanym odno niku (slug) nie b dzie istnia a, wygenerowany zostanie wyj tek. Przechwytujemy go za pomoc try/catch i wy wietlamy odpowiedni komunikat. 5.2 Kana y RSS W tym wiczeniu dodamy kana RSS dla najnowszych wiadomo ci z wykorzystaniem komponentu Feed frameworka Django. 1. W katalogu news stwórz plik feeds.py o kodzie: # -*- coding: utf-8 -*- from blogs.news.models import * from django.contrib.syndication.feeds import Feed class LatestNews(Feed): title = 'Wiadomo ci z MOJASTRONA.pl' link = 'MOJASTRONA.pl' description = 'Wiadomo ci z MOJASTRONA.pl' def items(self): return News.objects.order_by('-id')[:15] 2. W urls.py dodaj fragment kodu: from blogs.news.feeds import * feeds = 'news': LatestNews, 3. Dodaj regu mapowania: (r'^rss/(?p<url>.*)/$', 'django.contrib.syndication.views.feed', 'feed_dict': feeds), 4. W katalogu templates utwórz folder feeds, a w nim pliki news_title.html i news_desription, odpowiednio o kodzie: i obj.title obj.text safe

Rozdzia 5. Ksi ga kucharska 49 5. Pod adresem http://localhost:8000/rss/news/ dost pny b dzie gotowy kana RSS. Tworzenie kana ów RSS czy te Atom za pomoc Feed polega na zdefiniowaniu klasy zawieraj cej opis kana u (title, link, description), a tak e podklasy items okre laj cej list rekordów do wy wietlenia. Dodatkowo mo emy doda proste szablony, okre laj ce, jakie pole lub pola modelu nale y wy wietla dla pól title i description w kanale RSS. 5.3 Mapa sitemap Sitemap to plik XML zawieraj cy list stron serwisu. Sitemaps zosta y wymy lone przez Google i obecnie kilka wyszukiwarek u ywa ich w celu usprawnienia indeksowania stron internetowych. Celem tego wiczenia b dzie stworzenie mapy z wykorzystaniem elementów frameworka. 1. W settings.py do INSTALLED_APPS dodaj 'django.contrib.sitemaps'. 2. Otwórz plik news/feeds.py i dodaj fragment kodu: from django.contrib.sitemaps import Sitemap class NewsMap(Sitemap): def items( self ): return News.objects.all() def lastmod( self, obj ): return obj.date def changefreq(self, obj): return 'monthly' 3. Otwórz plik urls.py i dopisz do niego kod: sitemaps = 'news': NewsMap, 4. Dodaj do regu mapowania wpis: (r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', 'sitemaps': sitemaps) 5. Pod adresem http://localhost:8000/sitemap.xml znajdziesz map sitemap dla naszej strony.

50 Django wiczenia praktyczne 5.4 Generowanie plików PDF W Pythonie do generowania plików PDF mo emy wykorzysta bibliotek ReportLab (http://www.reportlab.org/rl_toolkit.html). Pakiet dla systemów MS Windows mo emy pobra ze strony projektu, natomiast u ytkownicy Linuksa zapewne znajd ReportLab w repozytorium dystrybucji. Tworzenie plików PDF polega tu na rysowaniu elementów na stronie z wykorzystaniem wspó rz dnych. ReportLab to narz dzie bardziej techniczne, s u ce, jak sama nazwa wskazuje, do generowania raportów, zestawie czy dokumentów o okre lonej strukturze. Je eli interesuje nas konwersja kodu HTML na plik PDF w wi kszym zakresie, to pomóc nam mo e biblioteka Pisa. W tym wiczeniu przedstawiony zostanie prosty widok generuj cy plik PDF dla wiadomo ci. 1. Otwórz plik news/views.py i dodaj na pocz tku importy: from reportlab.platypus import Table, TableStyle, Paragraph from reportlab.lib import colors from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.styles import getsamplestylesheet from django.http import HttpResponse, HttpResponseRedirect from django.conf import settings 2. Dodaj widok generuj cy plik PDF o kodzie: def show_news_pdf(request, slug): try: news = News.objects.get(slug=slug) except: return render_to_response('error.html', 'error': 'Strona nie istnieje', context_instance=requestcontext(request)) e = HttpResponse() e['content-type'] = 'application/pdf' e['content-disposition'] = 'attachment; filename="%s.pdf";' % news.slug c = canvas.canvas(e, pagesize=a4) width, height = A4 pdfmetrics.registerfont(ttfont('dejavu', settings.app_root + 'site_media/fonts/dejavusans.ttf')) c.setfont("dejavu", 14) # margines, wysoko, tre

Rozdzia 5. Ksi ga kucharska 51 c.drawstring(50,(height-60), news.title) stylesheet=getsamplestylesheet() stylen = stylesheet['normal'] stylen.fontname = 'Dejavu' stylen.fontsize = 9 p = Paragraph(news.text, stylen) w,h = p.wrap(width-70, height) p.drawon(c, 50, (height-120)) c.line(50, (70), 570, (70)) c.setfont("dejavu", 8) c.drawstring(50,(60), unicode(news.date)) c.drawstring(50,(50), u'wiadomo ze strony http://www.mojastrona.pl') c.showpage() c.save() return e 3. Dodaj w pliku urls.py regu mapuj c odno nik na nast puj cy widok: (r'^news/(?p<slug>[\w\-_]+)/pdf/$', 'news.views.show_news_pdf'), 4. W szablonie show_news.html dodaj odno nik do wersji PDF: <a href="/news/ news.slug /pdf/">pdf</a> 5. W pliku settings.py zdefiniuj APP_ROOT, podaj c bezwzgl dn cie k do katalogu z projektem: APP_ROOT = ' cie ka/do/katalogu/z/projektem' 6. W katalogu site_media dodaj folder fonts i umie w nim przynajmniej jeden plik czcionki TTF (w tym przyk adzie skorzystano z czcionki Dejavu dejavusans.ttf). 7. Zapisz wszystkie zmiany i sprawd wersj PDF dla wybranej wiadomo ci. Je li chodzi o kod, zaczynamy w nim od okre lenia p ótna (canvas), czyli rozmiaru strony i nazwy pliku. Nast pnie rejestrujemy czcionki, jakich chcemy u y (podane pliki *.ttf musz by dost pne). W Report- Lab elementy umieszczane (rysowane) s w miejscu (x, y) okre lonym w pikselach lub w innych jednostkach (cale, centymetry itd.). Dla strony A4 zmienne width i height przechowuj dane punktu znajduj cego si w lewym dolnym rogu (rozmiar strony A4). Do wy wietlania tekstu stosujemy nieformatowany (drawstring) oraz formatowany (Paragraph)

52 Django wiczenia praktyczne Rysunek 5.1. Plik PDF wygenerowany dla wiadomo ci tekst. Wszystkie te elementy posiadaj szereg opcji odpowiedzialnych za ich wygl d, a szczegó y znajdziemy w bardzo obszernej dokumentacji ReportLab. 5.5 AJAX w Django Wykorzystanie da wysy anych AJAX-em wygl da w Django standardowo. Przesy amy je na okre lony URL, a nast pnie do ich wykonywania u ywamy dowolnego frameworka JavaScript, np. jquery, czy te jakich prostszych skryptów. W tym wiczeniu skorzystamy z prostej biblioteki ajaxroutine (http://www.dynamicdrive.com/dynamicindex17/ ajaxroutine.htm). 1. Otwórz plik news/views.py i dodaj widok: def ajax(request): return HttpResponse(unicode(datetime.now())) 2. Dodaj mapowanie w urls.py: (r'^ajax/$', 'news.views.ajax'), 3. W szablonie base.html w sekcji HEAD wpisz kod: <script type="text/javascript" src="/site_media/ajaxroutine.js"></script> <script type="text/javascript"> function processgetpost() var myajax=ajaxpack.ajaxobj var myfiletype=ajaxpack.filetype

Rozdzia 5. Ksi ga kucharska 53 if (myajax.readystate == 4) if (myajax.status==200 window.location.href.indexof("http")==-1) // Je eli co zostanie zwrócone, wy wietl to if (myajax.responsetext.length > 3) document.getelementbyid('aj').innerhtml='<h1>' + myajax.responsetext + '</h1>'; else // Czy cimy komunikat document.getelementbyid('aj').innerhtml=''; </script> 4. W kodzie szablonu dopisz: <div id="aj" style="text-align:center;"></div> <a href="#" onclick="ajaxpack.getajaxrequest('/ajax/', '', processgetpost, 'txt')">czas przez AJAX</a> Po zapisaniu zmian pojawi si odno nik Czas przez AJAX, który b dzie wysy a dania AJAX-a za pomoc biblioteki ajaxroutine. Dodana funkcja processgetpost b dzie wstawia a otrzymane dane (to co zwróci wywo any widok) do taga DIV o ID aj: document.getelementbyid('aj').innerhtml Rysunek 5.2. dania wysy ane za pomoc AJAX-a