Download - Tjejer Kodar 100 - Dag 5 - Modeller & Golive
![Page 1: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/1.jpg)
Dag 5: Modeller & Golive
![Page 2: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/2.jpg)
Läxförhör Django
.get()
templates
models.py
<html>
views.pyurls.py
/quiz/1 def quiz()
![Page 3: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/3.jpg)
Mål för idag
• Förstå vad en databas är och hur den används
• Förstå hur django hanterar formulärdata
• Kunna använda sessionen för att lagra data
• En sajt som är live!
![Page 4: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/4.jpg)
Tidsschema• 09.00 - 10.00: Dagens presentation
• 10.00 - 14.00: Dagens tutorial
• 14.00 - 16.00: Golive (börja senast 14.00!)
• 16.00 - 16.30: Samling och wrapup
• 16.30 - 17.00: Visa för andra Tjejer kodar-deltagare
![Page 5: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/5.jpg)
Vad är en databas?Land Mat Namn År
1 … … … …
2 … … … …
3 … … … …
4 … … … …
Färg Vikt Vem När
1 … … … …
2 … … … …
3 … … … …
4 … … … …Tabell
Tabell
![Page 6: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/6.jpg)
Används via kod…
SQL
![Page 7: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/7.jpg)
Inte magiska…Utdata Indata Namn År
1 … … … …
2 … … … …
3 … … … …
4 … … … …
Färg Vikt Vem När
1 … … … …
2 … … … …
3 … … … …
4 … … … …
![Page 8: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/8.jpg)
SQL?!SELECT COUNT(id) FROM user WHERE reg_date > "2000-01-01"
SELECT username FROM user WHERE username LIKE "emil%"
![Page 9: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/9.jpg)
models.py
class Quiz(models.Model): quiz_number = models.PositiveIntegerField() name = models.CharField(max_length=100) description = models.TextField()
![Page 10: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/10.jpg)
Vår Quiz-Modelid quiz_number name description
1 1 Klassiska böcker Hur bra kan…
2 2 Största fotbollslagen Kan du dina lag?
3 3 Mest kända hackare Hackerhistoria är…
4 … … …
![Page 11: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/11.jpg)
Hur använder jag min Quiz-modell?
from quiz.models import Quizquizzes = Quiz.objects.all()
SELECT * from quiz_quiz
quizzes = [quiz1, quiz2, quiz3]
quizzes[0].name ”Klassiska böcker”
![Page 12: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/12.jpg)
Vad mer kan vi göra?• Skapa data:
• Quiz.objects.create(quiz_number=4, name=”Min quiz”, description=”Här är min quiz”)
• Hämta ut data:
• Quiz.objects.filter(quiz_number__gt=3).count()
• Quiz.objects.filter(name__startswith=”Klassiska”)
• Quiz.objects.get(quiz_number=”1”)
![Page 13: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/13.jpg)
Vad mer kan vi göra?• Uppdatera data:
• quiz = Quiz.objects.get(quiz_number=”1”)
• quiz.name = “Starwars-quizzen”
• quiz.save()
• Ta bort data:
• Quiz.objects.filter(name__contains=”test”).delete()
![Page 14: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/14.jpg)
models.py
class Question(models.Model): question = models.TextField() answer1 = models.CharField(max_length=100) answer2 = models.CharField(max_length=100) answer3 = models.CharField(max_length=100) correct = models.PositiveIntegerField() quiz = models.ForeignKey(Quiz)
![Page 15: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/15.jpg)
Vår Question-model
id question answer1 answer2 answer3 correct quiz_id
1 Hur många bultar har… 12 123 1234 2 1
2 Välj ett datum 1 jan 10 feb 29 maj 3 1
3 … … … … … …
4 … … … … … …
![Page 16: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/16.jpg)
Migrations• python manage.py makemigrations
• Migrations for 'quiz': 0001_initial.py: - Create model Question - Create model Quiz - Add field quiz to question
• python manage.py migrate
![Page 17: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/17.jpg)
Django Admin
![Page 18: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/18.jpg)
Formulär
<form action="/min-sida/"><input type="radio" name="year" value=”2015"> 2015<input type="radio" name="year" value="2016"> 2016<input type="radio" name="year" value="2017"> 2017<button type="submit">Next</button>
</form>
Data som skickas: year=2017
![Page 19: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/19.jpg)
Standardval
<form action="/min-sida/"><input type="radio" name="year" value=”2015" checked> 2015<input type="radio" name="year" value="2016"> 2016<input type="radio" name="year" value="2017"> 2017<button type="submit">Next</button>
</form>
Data som skickas: year=2017
![Page 20: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/20.jpg)
Hantera formulärdata
def answer(request): year = request.POST["year"] return HttpResponse("Du skickade med " + year)
![Page 21: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/21.jpg)
Hur spara svaren?
• Behöver bara vara temporärt, onödigt med databas
• En vanlig variabel fungerar inte, när man laddar om sidan så nollställs allt…
• Lösning: Sessionen!
![Page 22: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/22.jpg)
Sessionensaved_answers = { "1": 2, "2": 3, "3": 3, "4": 1,}
saved_answers["5"] = 1
saved_answers = { "1": 2, "2": 3, "3": 3, "4": 1, "5": 1,}
![Page 23: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/23.jpg)
Sessionen
def answer(request, quiz_number, question_number): saved_answers = request.session[quiz_number]
saved_answers[question_number] = answer
request.session[quiz_number] = saved_answers
![Page 24: Tjejer Kodar 100 - Dag 5 - Modeller & Golive](https://reader033.vdocuments.pub/reader033/viewer/2022051300/58a7f13c1a28abd7248b6c19/html5/thumbnails/24.jpg)
Projektet
.get()
templates
models.py
<html>
views.pyurls.py
/quiz/1 def quiz()