Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč



Podobné dokumenty
Inovace výuky prostřednictvím šablon pro SŠ

Inovace a zkvalitnění výuky prostřednictvím ICT Tvorba webových stránek. Ing. Zelinka Pavel Číslo: VY_32_INOVACE_35 17 Anotace:

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup

PSK3-9. Základy skriptování. Hlavička

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

PHP a Large Objecty v PostgreSQL

HTML Hypertext Markup Language

WWW a HTML. Základní pojmy. Ivo Peterka

PSK3-11. Instalace software a nastavení sítě. Instalace software

HTML - Úvod. Zpracoval: Petr Lasák

Sada 1 - PHP. 14. Úvod do jazyka SQL

Střední odborná škola a Střední odborné učiliště, Hořovice

Tvorba webu. Úvod a základní principy. Martin Urza

Databázové systémy Cvičení 5.2

Návrh a tvorba WWW stránek 1/14. PHP a databáze

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Mgr. Vlastislav Kučera lekce č. 2

PSK3-20. Malý poštovní server I. Instalace

5. POČÍTAČOVÉ CVIČENÍ

TNPW1 Cvičení aneta.bartuskova@uhk.cz

Tvorba webových stránek

Vývoj Internetových Aplikací

Tvorba WWW stránek. Mojmír Volf

13. Vytváření webových stránek

DUM 12 téma: Příkazy pro tvorbu databáze

NSWI096 - INTERNET. Úvod do HTML

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Mgr. Vlastislav Kučera přednáška č. 2

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Návrh a tvorba WWW stránek 1/8. Formuláře

Měřící systém se vzdáleným přístupem. Databáze

1 Webový server, instalace PHP a MySQL 13

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Základy HTML. Obecná syntaxe HTML. Struktura HTML

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Co je HTML. 1. Párový tag má začátek a konec: 2. Nepárový tag nemá ukončovací značku:

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Střední odborná škola a Střední odborné učiliště, Hořovice

Internet 2 css, skriptování, dynamické prvky

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Jaku b Su ch ý 1

IE1 jazyk HTML a kaskádové styly

1. Webový server, instalace PHP a MySQL 13

PSK1-9. Číslicové zpracování signálů. Číslicový signál

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student:

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Základy informatiky. 03, HTML, tvorba WWW stránek. Daniela Szturcová Část převzata z přednášky P. Děrgela

Střední odborná škola a Střední odborné učiliště, Hořovice

IE1 jazyk HTML a kaskádové styly

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Název Live prez Sear enta Maps

Popis XML rozhraní Veřejného webu RŽP

Semestrální práce z DAS2 a WWW

Jak vytva r et webove stra nky pomocı XHTML a CSS.

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

(X)HTML, CSS a jquery

Tvorba aplikací v Oracle Application Express

Nová struktura souborů a složek

Snadná úprava stránek, nemusím umět HTML, tvořím obsah téměř jako ve Wordu. Jak změnit obsah nástěnky: vpravo nahoře Nastavení zobrazených informací

1 Základy programování v PHP

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Verzování a publikace dat na webu za pomoci PostgreSQL

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

(X)HTML. Internetové publikování

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

FIREBIRD relační databázový systém. Tomáš Svoboda

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Nastavení propojení s eshopem

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Kapitola 5 Dynamický obsah načítaný

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

ASP.NET MVC. Michal Horák 2008

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MS Access propojení relací s formuláři a sestavami Ing.

Sada 1 - PHP. 09. Formuláře

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Rezervační systém Tvorba WWW stránek

Čtvrtek 11. dubna. Základy HTML. Obecná syntaxe HTML. Struktura HTML

Úvod do databázových systémů

!!Via!AUREA,!s.r.o.!

Michal Augustýn ALWIL Software Microsoft Most Valuable Professional

Internetové publikování

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Výukový materiál zpracovaný v rámci projektu

XHTML 1. Formuláře. Element form. <form>... </form>

Transkript:

Bottle -- příklad V tomto příkladu se pokusíme vytvořit malou aplikaci umožňující psát jednoduché poznámky. Databáze Nejprve je třeba vytvořit v databázovém serveru uživatele (pokud už není vytvořen) a také databázi, do které budeme ukládat data. Já nazvu uživatele marek a databázi notes. -- uživatel CREATE USER 'marek'@'localhost' IDENTIFIED BY 'tojetajny'; GRANT USAGE ON *.* TO 'marek'@'localhost' IDENTIFIED BY 'tojetajny' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; -- databáze CREATE DATABASE IF NOT EXISTS `notes` CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON `notes`.* TO 'marek'@'localhost'; Dále vytvoříme v databázi tabulku poznamky, do které budeme ukládat jednotlivé záznamy. Tabulka bude obsahovat následující sloupce: id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč titulek Titulek poznámky: obsah Samotný obsah poznámky: CREATE TABLE poznamky ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, titulek VARCHAR(100), obsah VARCHAR(10000) ); Testovací data Dále by bylo vhodné vložit do tabulku dva řádky pro účely testování: INSERT INTO notes.poznamky (`titulek`, `obsah`) VALUES ('Miluju Python', 'Python je nejlepší programovací jazyk na světě. Svůj život už si bez něj nedokážu představit.' ), ('To je jedno', 'Je úplně jedno, co sem napíšu.' 1

); URL Jednotlivé akce budou probíhat na jim přidělených URL adresách: / seznam poznámek /poznamka/id jednotlivé poznámky (ID je její číselný identifikátor) /edit/id editace poznámky Jednotlivým adresám odpovídají také šablony, které se budou vykreslovat. Šablony Budeme potřebovat tři základní šablony: pro seznam poznámek, pro každou zobrazení poznámky a pro editaci poznámky. Kostra HTML stánky může vypadat asi takto: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>notes</title> <style type="text/css"> body { width: 80%; margin-left:auto; margin-right:auto; } #hlavni { color: green; } </style> </head> <body> {{sem budu dávat obsah stránky}} </body> </html> Tato základní kostra by se měla rozpadnou na tři šablony: 1. seznam.tpl bude vypisovat seznam poznámek. Myslím, že by bylo vhodné předat seznam poznámek do šablony opravdu jako seznam. Každá položka seznamu bude obsahovat další seznam s id a titulkem: <h1><a href="/">moje poznámky</a></h1> <hr /> <ol> 2

% for id,titulek in seznam_poznamek: <li> <a href="poznamka/{{id}}">{{titulek}}</a> :-_ <a href="edit/{{id}}">edituj</a> </li> % end </ol> <hr /> <h1>přidej poznámku</h1> <form method="post"> <p> <input type="text" name="titulek" placeholder="nový titulek" /> <input type="submit" name="odeslat" value="odeslat" /> </p> </form> 2. poznamka.tpl bude zobrazovat konkrétní poznámku: <h1><a href="/">moje poznámky</a></h1> <hr /> <h1 id="hlavni">{{titulek}}</h1> <hr /> {{!obsah}} <hr /> <p><a href="/edit/{{id}}">edituj</a></p> 3. edit.tpl bude sloužit k editaci poznámky: <h1><a href="/">moje poznámky</a></h1> <hr /> <h1>{{titulek}}</h1> <hr /> <form method="post"> <p> <input type="hidden" name="id" value="{{id}}"> <textarea rows="30" cols="80" name="obsah">{{obsah}}</textarea> </p> <p> <input type="submit" value="odeslat"> </p> </form> Bottle Seznam poznámek Základ pro náš zdrojový kód může vypadat například takto: #!/usr/bin/python # -*- coding: utf8 -*- # Soubor: notes.py # Datum: 23.03.2014 23:00 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz # Licence: GNU/GPL ############################################################################ """ Webový notýsek """ from future import unicode_literals from bottle import run, get, post, redirect, template import MySQLdb 3

# passwd='eek6eud1', db = MySQLdb.connect(host='localhost', user='marek', passwd='tojetajny', charset='utf8', db='notes') @get('/') @get('/seznam') def seznam(): cursor.execute('select id, titulek FROM poznamky') data = cursor.fetchall() return template('seznam', seznam_poznamek=data) ########################################################################## run(host='0.0.0.0', port=8090, reloader=true) db.close() Tím by měla být obstarán seznam poznámek. V dolní části stránky je formulář pro vytvoření nové poznámky. Tento formulář je třeba "obsloužit". Příjem dat pro vytvoření nové poznámky se děje pomocí metody POST. @post('/') @post('/seznam') def pridej(): titulek = request.forms.titulek cursor.execute('insert INTO poznamky (titulek, obsah) ' "VALUES ('{}','NOVE')".format(titulek)) db.commit() redirect('/') Dále je třeba vytvořit kód pro zobrazení a editaci poznámky. Zobrazení poznámky Pro jednoduché vykreslení a editaci použijeme jazyk Markdown, konkrétně tedy python knihovnu markdown. Tento jednoduchý značkovací jazyk umožňuje velice přehlednou editaci a převod do HTML. Samotný převod se děje pomocí funkce markdown.markdown(). Ukázka značkovacího jazyka Markdown Nadpis ========== * toto * je * seznam Menší naspis ------------ 4

1. toto se 2. čísluje Sem píšu tenějaká text a prázdný řádek udělá nový odstavec. Ještě odkaz na [dokumentaci](http://daringfireball.net/projects/markdown/syntax) <p>dle libosti <em>můžu používat</em> html</p> nebo obrázek![alt text](/image/600px/svg_to_png/192053/remington_typewriter.png) O samotné vykreslení poznámek by se mohl starat následující kód: import markdown @get('/poznamka/<id:int>') def ukaz(id): cursor.execute('select titulek, obsah FROM poznamky ' 'WHERE id = {}'.format(id) ) titulek, obsah = cursor.fetchone() return template('poznamka', id=id, titulek=titulek, obsah=markdown.markdown(obsah)) Úprava poznámky Nejprve potřebujeme poznámku vytáhnou z databáze a vložit ji do šablony. Tento kód se tedy velice podobá kódu pro zobrazení poznámky. @get('/edit/<id:int>') def edit(id): cursor.execute('select titulek, obsah FROM poznamky ' 'WHERE id = {}'.format(id) ) titulek, obsah = cursor.fetchone() return template('edit', id=id, titulek=titulek, obsah=obsah) Editovaná poznámka přichází do naší aplikace metodou POST. Poté co aktualizovaný text poznámky vložíme do databáze poznámku zobrazíme. To se děje přesměrováním požadavku na stránku /poznamka/id. @post('/edit/<id:int>') def update(id): obsah = request.forms.obsah cursor.execute("update poznamky SET obsah='{0}' " 5

"WHERE id='{1}'".format(obsah, id)) db.commit() redirect('/poznamka/{}'.format(id)) Závěrečný úkol Přidejte do šablon a do aplikace kód, který zajistí vymazání dané poznáky. SQL může vypadat asi takto: DELETE FROM poznamky WHERE id='cislo'; Název školy: Autor: Anotace: PSK3-19 Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka web framework Bottle.py Vzdělávací oblast: Informační a komunikační technologie Předmět: Počítačové sítě a komunikační technika (PSK) Tematická oblast: Operační systém Linux/Unix Výsledky vzdělávání: Klíčová slova: Druh učebního materiálu: Typ vzdělávání: Ověřeno: Zdroj: Žák vytvoří jednoduchou webovou aplikaci pomocí Bottle.py Linux, Unix, Apache, Python, Bottle.py, web framework Online návod pro samostatnou práci Střední vzdělávání, 4. ročník, technické lyceum VOŠ a SPŠE Olomouc; Třída: 4L Vlastní poznámky, Vilém Vychodil: Linux Příručka českého uživatele 6