24
Dag 5: Modeller & Golive

Tjejer Kodar 100 - Dag 5 - Modeller & Golive

Embed Size (px)

Citation preview

Page 1: Tjejer Kodar 100 - Dag 5 - Modeller & Golive

Dag 5: Modeller & Golive

Page 2: Tjejer Kodar 100 - Dag 5 - Modeller & Golive

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

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

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

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

Används via kod…

SQL

Page 7: Tjejer Kodar 100 - Dag 5 - Modeller & Golive

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

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

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

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

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

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

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

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

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

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

Django Admin

Page 18: Tjejer Kodar 100 - Dag 5 - Modeller & Golive

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

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

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

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

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

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

Projektet

.get()

templates

models.py

<html>

views.pyurls.py

/quiz/1 def quiz()