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
Timing2023 summer intensive, 2023-05-22 w21 Mon .. 2023-05-31 w22 Wed, 8 days
Credits5 cr
ClassesMon-Fri 9-16 online, mandatory participation
Max students30 (six free seats, Haaga-Helia students enroll in MyNet)
LanguageFinnish (+reading material in English)
RemoteYes, fully remote
Feedback4.9 / 5 Excellent feedback Five star experience
ServicesMoodle, Jitsi, Laksu
First class2023-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 maHei maailma!Järjestäytyminen. Backend-koodauksen edut. Yleiskuva Djangosta. Hei HTML+CSS, hei Python, hei Django.
2023-05-23 w21 tiTietokannan määrittely. Automaattinen liittymä tietokantaanORM - olioista tauluiksi. Django admin. Muotit (templates). ListView.
2023-05-24 w21 keKäyttäjän syötteetHTML forms, Django forms. Syötteiden validointi ja puhdistus.
2023-05-25 w21 toOlioiden (ja taulujen) suhteetYhdestä moneen. Esim. yhdellä käyttäjällä voi olla monta tapahtumaa.
2023-05-26 w21 peMiniprojektien aloitus. (Kirjautuminen)Mahdollinen lisäaihe: kirjautuminen (käyttäjät, autentikointi, käyttäjän oma sisältö.)
Viikonloppu------
2023-05-29 w22 maPalvelimen vuokraaminenTarvitset 5-10 EUR
2023-05-30 w22 tiMiniprojektien työstämistäVinkkejä tavallisiin haasteisiin
2023-05-31 w22 keOman miniprojektin esittelyProjektin 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)

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

(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

(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:

h4 Suhteita

(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

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.