Python Web - Idea to Production - 2023
Python weppipalvelu - ideasta tuotantoon ICT8TN034-3003
Your own Python web application. From idea to production, in 8 days.
Instagram, Pintrest and Disqus use Django - the exact same framework as the course. Youtube and Facebook are built with Python.
Course completed! Feedback 5.0 (everyone gave feedback, each feedback was 5/5). Great mini-projects - I'm baffled by how much you could apply what you learned in just 7 days.
New course coming up 2024 summer! Course starts 2024-05-20 w21 Mon. Enroll in Peppi / MyNet, enrollment opens 2023-11-27 w48 Mon at 08:00. This web page is for the past course.
Course name and code: | Python weppipalvelu - ideasta tuotantoon ICT8TN034-3003 |
Timing | 2023 summer intensive, 2023-05-22 w21 Mon .. 2023-05-31 w22 Wed, 8 days |
Credits | 5 cr |
Classes | Mon-Fri 9-16 online, mandatory participation |
Max students | 30 (six free seats, Haaga-Helia students enroll in MyNet) |
Language | Finnish (+reading material in English) |
Remote | Yes, fully remote |
Feedback | 4.9 / 5 Excellent feedback |
Services | Moodle, Jitsi, Laksu |
First class | 2023-05-22 w21 09:00, Tero emails video conference link |
The course is in Finnish (and requires full fluency in Finnish), so the rest of this page is in Finnish.
Kurssi edellyttää aktiivista etäläsnäoloa koko kurssin ajan joka arkipäivä 9-16. Palvelimen vuokraamiseen tarvitset 5-10 euroa. Kurssi päättyy kokonaan w22 ke, sen jälkeen ei voi eikä tarvitse palauttaa mitään.
Osaamistavoitteet
Rakenna weppipalvelu Pythonilla ja asenna se julkiselle palvelimelle.
Opit tekniikan, joka
- palvelee asiakkaita Linuxilla, Macilla, Windowsilla, iPhonella, Androidilla - millä vain selaimella
- kerää itsestään tietoa siitä, miten palveluasi käytetään
- antaa monien käyttäjien muokata tietoja yhtä aikaa (aika tavallinen vaatimus yritysten ohjelmissa)
- toimii käyttäjillä asentamatta mitään
- käyttää automaattisesti uusinta versiota ohjelmastasi
Opintojakson suoritettuaan opiskelija
- Osaa ohjelmoida www-palvelimella ajettavan ohjelman, jota voi käyttää millä vain selaimella
- Osaa tallentaa tiedot tietokantaan niin, että useampi käyttäjä voi katsella ja muokata tietoja samaan aikaan
- Osaa asentaa tarvittavat palvelimet Linuxille
- Osaa vuokrata julkaisuun tarvittavat pilvipalvelut
- Ymmärtää palvelinpään (backend) www-ohjelmoinnin edut ja toimintaperiaatteen
Lähtötaso
- Linuxin alkeet (Linuxin asennus, Linuxin käyttö komentokehotteesta, palvelinten eli demonien asentaminen)
- Ohjelmoinnin alkeet millä vain kielellä: muuttuja, funktio, if-else, silmukka, luokka, olio...
- Puhua suomea ja lukea englantia
Tarvittavat taidot on voinut hankkia esimerkiksi kursseilla "Linux palvelimena" ja millä tahansa ohjelmoinnin alkeiskurssilla. Esitiedot tarkistetaan tarvittaessa alkutestillä tai -haastattelulla. Kurssille tullessa ei tarvitse osata Pythonia.
Kurssi toteutetaan 100% etäopetuksena. Osallistumiseen tarvitaan Linux, Internet-yhteys, videokamera, kuulokkeet ja mikrofoni. Palvelimen vuokraamiseen pilvestä tarvitset 5-10 euroa (tai voit käyttää ilmaisia Github Education -palveluita, jos sinulla on niitä käyttämättöminä). Kurssille tullessa opiskelijalla olisi hyvä olla Linux asennettuna itselle. Myös virtuaalikoneeseen asennus käy.
Ilmoittautuneet saavat ohjeen ympäristön asentamisesta.
(Onko sinulla Mac M1? M1 ja M2 käyttävät arm64-prosessoriarkkitehtuuria. Teemu Laineen ohje Debianin asentamisesta M1-prosessoriselle Macille.)
Aikataulu
Joka arkipäivä videokonfferenssissa 9-16. Kurssilla opit, mitä nämä käsitteet tarkoittavat - alussa moni termi lienee vieras.
2023-05-22 w21 ma | Hei maailma! | Järjestäytyminen. Backend-koodauksen edut. Yleiskuva Djangosta. Hei HTML+CSS, hei Python, hei Django. |
2023-05-23 w21 ti | Tietokannan määrittely. Automaattinen liittymä tietokantaan | ORM - olioista tauluiksi. Django admin. Muotit (templates). ListView. |
2023-05-24 w21 ke | Käyttäjän syötteet | HTML forms, Django forms. Syötteiden validointi ja puhdistus. |
2023-05-25 w21 to | Olioiden (ja taulujen) suhteet | Yhdestä moneen. Esim. yhdellä käyttäjällä voi olla monta tapahtumaa. |
2023-05-26 w21 pe | Miniprojektien aloitus. (Kirjautuminen) | Mahdollinen lisäaihe: kirjautuminen (käyttäjät, autentikointi, käyttäjän oma sisältö.) |
Viikonloppu | --- | --- |
2023-05-29 w22 ma | Palvelimen vuokraaminen | Tarvitset 5-10 EUR |
2023-05-30 w22 ti | Miniprojektien työstämistä | Vinkkejä tavallisiin haasteisiin |
2023-05-31 w22 ke | Oman miniprojektin esittely | Projektin esittely, toisten projektien kommentointi. |
Sisällössä on toteutuskohtaisia muutoksia, aikataulu kehittyy vielä toteutuksen aikana.
Palautteen hyödyntäminen
Kurssilla on hyödynnetty palautetta aiemmilta kursseiltani.
Tällä toteutuksella on hyödynnetty palautteita edellisen kesän Python Web -kurssilta. Ensimmäisen toteutuksen rakentamisessa hyödynnettiin muiden ohjelmointikurssieni palautteita. "Go-ohjelmointi" on saanut huipppupalautteen 4.9/5 kiitettävä. "Go ohjelmointi" osoitti, että intensiivikurssi riittää uuteen kieleen tutustumiseen ja sen käyttöön miniprojektissa. Kurssin tekniikoita on kokeiltu alustavasti myös projektikursseilla ja kurssilla "Linux palvelimet".
Opiskelijoiden toiveiden mukaisesti teoria opetetaan tietokoneiden ääressä käytännön esimerkkien yhteydessä. Opettajakeskeinen opetus ja opiskelijoiden lyhyet tuntiharjoitukset vuorottelevat. Harrastuneisuutta tuetaan ja opiskelijoita kannustetaan taitojen välittömään kokeiluun kurssin ulkopuolella. Kurssilla syntyvien raporttien julkaisemiseen ja vapaaseen lisensointiin kannustetaan.
Anna palautetta
Palaute on todella tärkeä tapa kehittää kurssia – kiitos kommenteista jo etukäteen. Palaute kahteen kanavaan
1) Vapaamuotoinen palaute kommenttina tämän kurssisivun perään
Vapaamuotoinen palaute kommenttina tämän kurssisivun perään
Vapaamuotoiseen palautteeseen saa kirjoittaa mitä vain, eikä kysymyksiä tarvitse toistaa. Mutta tässä vinkiksi:
- Opitko jotakin – eli osaatko nyt sellaista, mitä et osannut ennen kurssia? Pystytkö nyt tekemään jotain, mikä ei olisi onnnistunut ennen kurssia?
- Oliko opittu hyödyllistä? Luuletko, että sille on käyttöä esim. tulevaisuudessa töissä tai kotona?
- Teitkö jotain ensimmäistä kertaa? Käytit Djangoa, julkaisit weppiohjelman, vuokrasit pilvipalvelun, teit kirjautumisen weppiohjelmaan...
- Mitä mieltä olit työkalujen valinnasta: Python, Django, tapa käyttää Djangoa (class based generic views: ListView, CreateView...), palvelimet itse hankittuna ulkopuolisilta yrityksiltä, Linux, omassa hallussa olevat kehitystyökalut vapailla lisensseillä...
- Mitä mieltä olit läksyistä?
- Mitä pidit esityksistä ja esittämisestä?
- Saitko palautetta tunnilla ja esityksissä? Mitä mieltä olit palautteesta?
- Miten voisin parantaa kurssia?
- Viihdyitkö kurssilla?
- Suosittelisitko kurssia? Kenelle kurssi sopisi? Koulutoverille tai kollegalle?
2) Numeerinen palaute Haaga-Helian palautejärjestelmään MyNetissa
Numeerinen palaute Haaga-Helian palautejärjestelmään MyNetissa
Numeerisen palautteen avulla mm. verrataan Haaga-Helian kursseja toisiinsa. On tärkeää saada jokaiselta palaute, jotta tulos on tilastollisesti merkitsevä.
Numeeriset: Asteikko 1-välttävä (huonoin) ... 5-kiitettävä (paras)
- Oma aktiivisuutesi opiskelussa 1-5
- Osaamistavoitteiden saavuttaminen 1-5
- Työskentelytavat tukivat oppimista 1-5
- Opiskeluympäristö tuki oppimista 1-5
- Hyödyllisyys työelämään 1-5
Avoimet kysymykset (näihin voi myös kopioida samat vastaukset jotka kirjoitit aiemmin)
- Mitkä asiat edistivät oppimistasi?
- Miten kehittäisit toteutusta / toteutuskokonaisuutta, jotta osaamistavoitteet saavutettaisiin paremmin?
Kokonaisarviosi toteutuksesta / toteutuskokonaisuudesta 1-5
Suosittelisitko 1 - 10 (1 en varmasti, 10 aion varmasti suositella tai olen jo suositellut)
Kiitos palautteesta ja jännittävästä kurssista! Seuraavilla kursseilla nähdään.
Läksyt
Läksyt ovat alustavia. Ne ovat virallisia vasta, kun ne on annettu tunnilla ja saattavat muuttua ennen sitä.
h0 Python & HTML
- a) Tee alusta lähtien HTML5-sivu, palauta ruutukaappaus ja HTML-lähdekoodi.
- b) Tee esimerkkiohjelma Pythonilla, palauta ruutukaappaus ja lähdekoodi.
Kuten aina, palauta Laksuun ja arvioi kaksi. (Tässä tehtävässä h0 ei kirjoitettu raporttia, vain ruutukaappauksia ja lähdekoodeja).
h1 Hello Django
x) Lue (tiivistelmää ei tarvita, eli tästä lukutehtävästä ei palauteta mitään)
- Karvinen 2022: Django 4 Instant Customer Database Tutorial
Tee ja raportoi
- a) Asenna Django-kehitysympäristö (ja testaa, että etusivu näkyy)
- b) Vapaaehtoinen: Tee yksinkertainen taulu tietokantaan (models.py)
- c) Vapaaehtoinen: Muokkaa tietokantaa Django Admin -weppiliittymällä
- d) Vapaaehtoinen: Tee tauluun (luokkaan) uusia kenttiä
- e) Vapaaehtoinen, vaikea: tee kaksi taulua/luokkaa ja niiden välille riippuvuus
Kuten aina, palauta Laksuun klo 23 mennessä ja arvioi kaksi.
h2 Muotillista
- x) Silmäile: Karvinen 2023: Tero's Classy Django Cheatsheet
(Vain siltä osin kuin on tähän asti opeteltu. Tutut asiat ovat artikkelin alussa, suurin osa on vielä opettelematta ja opettelematonta osaa ei tarvitse lukea vielä. Tiivistelmää ei tarvita, eli tästä lukutehtävästä ei palauteta mitään.)
- a) Tee Django-ohjelma, joka listaa kaikki tietueet etusivulla (ListView). Palauta lähdekoodi ja ruutukaappaus lopputuloksesta.
(Jotain muuta kuin todo-lista, crm tai linnut. Ei tarvitse tehdä raporttia, lähdekoodi ja README.md:ssä kuvaus, mitä ohjelma tekee ja ruutukaappaus lopputuloksesta. Voit laittaa projektin omaksi kansiokseen esimerkiksi Github- tai Gitlab-varastoon.)
- b) Vapaaehtoinen: Tee käyttöliittymä uusien tietueiden lisäämiseen (CreateView)
- c) Vapaaehtoinen: Tee käyttöliittymä tietueiden muokaamiseen (UpdateView)
- d) Vapaaehtoinen: Tee käyttöliittymä tietueiden poistamiseen - ja varmista, haluatko todella poistaa (DeleteView) Kuten aina, palauta Laksuun klo 23 mennessä ja arvioi kaksi.
h3 Generally CRUDdy
- x) Kertaa CRUD muistilapusta Karvinen 2023: Tero's Classy Django Cheatsheet
(Opettelematonta osaa ei tarvitse lukea vielä. Tiivistelmää ei tarvita, eli tästä lukutehtävästä ei palauteta mitään.)
- a) Tee alusta lähtien uusi CRUD-ohjelma käyttäen Djangon yleisiä luokkanäkymiä (Class Based Generic Views).
(Sellainen, mitä et ole vielä tehtnyt. Jotain muuta kuin todo-lista, crm tai linnut. Ei tarvitse tehdä raporttia, lähdekoodi ja README.md:ssä kuvaus, mitä ohjelma tekee ja ruutukaappaus lopputuloksesta. Voit laittaa projektin omaksi kansiokseen esimerkiksi Github- tai Gitlab-varastoon.)
- b) Vapaaehtoinen, vaikea: Tee riippuvuus kahden luokan välille.
Kuten aina, palauta Laksuun klo 23 mennessä ja arvioi kaksi.
Vinkit:
- Lisätietoa Djangon dokumentaatiosta: Built-in class-based generic views
h4 Suhteita
- x) Silmäile: Django contributors 2023: Django 4.2 Documentation Many-to-one relationships
(Tiivistelmää ei tarvita, eli tästä lukutehtävästä ei palauteta mitään.)
- a) Tee alusta lähtien uusi CRUD-ohjelma, jossa on vähintään kaksi model-luokkaa (ja siten taulua) sekä niiden välillä riippuvuus (ForeignKey). Kokeile, että riippuvuus toimi sekä automaattisessa hallintaliittymässä (Django admin) että itse muoteilla tekemilläsi sivuilla.
(Sellainen, mitä et ole vielä tehtnyt. Jotain muuta kuin todo-lista, crm tai linnut. Ei tarvitse tehdä raporttia, lähdekoodi ja README.md:ssä kuvaus, mitä ohjelma tekee ja ruutukaappaus lopputuloksesta. Voit laittaa projektin omaksi kansiokseen esimerkiksi Github- tai Gitlab-varastoon.)
- b) Vapaaehtoinen: Tee Djangolla sivu, joka vaatii kirjautumista (LoginRequiredMixin). Voit tehdä tämän sivun mihin vain olemassaolevaan projektiin.
h5 Mini-mini
- a) Kuka tekee mitä & miniversio. Mitä projektillasi tehdään? Kuka tekee? Tee tosi pieni ja simppeli versio miniprojektistasi.
- b) Vapaaehtoinen: Tee miniprojektisi pidemmälle, kohti valmista.
h6 Prod
- x) Lue (Tiivistelmää ei tarvita, eli tästä lukutehtävästä ei palauteta mitään.)
- Lehto 2022: Teoriasta käytäntöön pilvipalvelimen avulla kohta "a) Pilvipalvelimen vuokraus ja asennus".
- Karvinen 2022: Deploy Django 4 - Production Install
- Karvinen 2017: First Steps on a New Virtual Private Server
- a) Vuokraa pilvipalvelin.
- b) Tee Djangosta tuotantotyyppinen asennus pilvipalvelimellesi.
- c) Vapaaehtoinen: vuokraa nimi ja laita se osoittamaan omaan palvelimeesi.
Vinkit:
- Tiistaina katsomme yhdessä pilvipalveluiden vuokrausta ja tuotantoasennuksia. Tee siis kaikki tehtävät niin pitkälle kuin suinkin osaat, jotta pääsemme konkreettisiin kysymyksiin.
- Omia projekteja viimeistellään huomenna. Muista tehdä ensin valmista ja sitten vasta hienoa, jos aikaa jää.
- GitHub Education tarjoaa pilvipalveluita ja nimen halvalla tai ilmaiseksi, mutta eivätpä nuo paljoa maksa markkinahintaankaan. Jos otat tämän, kannattaa olla etukäteen Github-profiilissa vahvistettu Haaga-Helian sähköpostiosoite.
- Näkyykö nimi jo palveluntarjoajan omilla palvelimilla? Namecheapilla 'host www.gorasdhoo.com dns2.registrar-servers.com'
h7 Valmis miniprojekti
a) Palauta linkki miniprojektisi etusivuun
Vinkit
- Voit palauttaa linkin esimerkiksi miniprojektin Github-varaston / kansion README-tiedostoon wepissä
- Etusivulla olisi hyvä olla taitoksen yläpuolella
- Tarkoitus - mitä ohjelma tekee
- Ruutukaappaus (ohjelman pääasiallisesta käyttötarkoituksesta - tämä on kuvallisesti "tarkoitus - mitä ohjelmalla tekee")
- Lisenssi (suosittelen GNU General Public License, version 3; lisenssin saa vapaasti valita)
- Demon linkki
- Linkki lähdekoodiin (Github/Gitlab näyttää tämän ihan automaattisestikin) Palautusaikaa on oppituntien alkuun asti eli keskiviikkoon 09:00.
Projektien esittelyssä on tärkeää ja pakollista olla sekä mukana että ristiinarvioimassa toisten esitykset.
Tervetuloa loppuhuipennukseen!
Adminstrivia
I keep updating this page during the course.