Tjejer Kodar 100 - Dag 4 - Django
-
Upload
emil-stenstroem -
Category
Technology
-
view
104 -
download
1
Transcript of Tjejer Kodar 100 - Dag 4 - Django
Dag 4: Django
Läxförhör Python• Variabler
• Listor
• Dictionaries
• Klasser
• Funktioner
• Metoder
• Loopar
• If-satser
Imorgon
• Ikväll: Förbered era frågor!
• 16.00 - Deadline - Emil sammanfattar
• 16.30 - Samling med de andra, grupper om 10
Django• Finns på Github:
https://github.com/django/django/
• 23172 commits av 1250 personer
• Ett webbramverk - en samling pythonkod för att bygga en webbplats
• Skapat av Simon, Jacob och Adrian, tre utvecklare från en lokaltidning i Lawrence, Kansas
Grundkoncept• Projekt
• URL:er
• Views
• Templates
• Modeller
Projektet
.get()
templates
models.py
<html>
views.pyurls.py
/quiz/1 def quiz()
Projektet• pip install django
• django-admin startproject quizsite .
• python3 manage.py migrate
• python3 manage.py runserver
• Surfa till: http://127.0.0.1:8000
Installera
Skapa projekt
Skapa databas
Starta webbserver
Surfa till din sajt!
URL:er• http://something.herokuapp.com• / => Startsida• /quiz/1/ => Quiz 1
/quiz/2/ => Quiz 2/quiz/3/ => Quiz 3
• /quiz/1/question/1/ => Quiz 1 - Question 1/quiz/1/question/2/ => Quiz 1 - Question 2/quiz/1/question/3/ => Quiz 1 - Question 3
• /quiz/1/completed/ => Quiz 1 - Results
Mönster för URL:er
• ^$
• ^quiz/[0-9]+/$
• ^quiz/[0-9]+/question/[0-9]+/$
• ^quiz/[0-9]+/completed/$
urls.py
urlpatterns = [url(r"^$", views.startpage),url(r"^quiz/[0-9]+/$", views.quiz),url(r"^quiz/[0-9]+/question/[0-9]+/$", views.question),url(r"^quiz/[0-9]+/completed/$", views.completed),
]
views.pyfrom django.http import HttpResponse
def startpage(request): return HttpResponse("Du är just nu på startsidan")
def quiz(request): return HttpResponse("Du är just nu på quizsidan")
def question(request): return HttpResponse("Du är just nu på frågesidan")
def completed(request): return HttpResponse("Du är just nu på klarsidan")
http://example.com/quiz/1/
quiz/1/
url(r”^quiz/[0-9]+/$", views.quiz)
def quiz(request): return HttpResponse("Du är just nu på quizsidan")
Du är just nu på quizsidan
def quiz(request): return HttpResponse("Du är just nu på quizsidan")
Vilken specifik quiz?
url(r"^quiz/[0-9]+/$", views.quiz)url(r"^quiz/([0-9]+)/$", views.quiz)
def quiz(request, quiz_number): return HttpResponse("Du är på quiz " + quiz_number)
http://example.com/quiz/2/
quiz/2/
url(r”^quiz/([0-9]+)/$”, views.quiz)
def quiz(request, quiz_number): return HttpResponse("Du är på quiz " + quiz_number)
Du är just nu på quiz 2
Templates
• Vi vill ju skicka tillbaka vår HTML, inte bara text…
• return HttpResponse(”text <b>här</b>”) ???
• Bättre: Templates!
Template
<!doctype html><html><body>Välkommen till quiz {{ quiz_number }}</body></html>
<!doctype html><html><body>Välkommen till quiz {{ quiz_number }}</body></html>
{"quiz_number": "1"} <- context+
<!doctype html><html><body>Välkommen till quiz 1</body></html>
=
Templates
return HttpResponse("text <b>här</b>")
def quiz(request, quiz_number): context = {"quiz_number": 1} return render(request, "quiz/quiz.html", context)
Testdataquizzes = [ { "quiz_number": 1, "name": "Klassiska böcker", "description": "Hur bra kan du dina klassiker?" }, { "quiz_number": 2, "name": "Största fotbollslagen", "description": "Kan du dina lag?" }, { "quiz_number": 3, "name": "Världens mest kända hackare", "description": "Hackerhistoria är viktigt, kan du den?" },]
Skicka med mer?quizzes = [ { "quiz_number": 1, "name": "Klassiska böcker", "description": "Hur bra kan du dina klassiker?" }, …]
def quiz(request, quiz_number): context = {"quiz": quizzes[quiz_number - 1]} return render(request, "quiz/quiz.html", context)
Välkommen till {{ quiz.name }}-quizetVälkommen till Klassiska böcker-quizet
Lista quizzes på startsidan?
def startpage(request): context = {"quizzes": quizzes} return render(request, "quiz/startpage.html", context)
{% for quiz in quizzes %} <p>{{ quiz.name }}</p>{% endfor %}
quizzes = { { "quiz_number": 1, "name": "Klassiska böcker", "description": "Hur bra kan du dina klassiker?" }, …}
Direktlänk till quiz?{% for quiz_slug, quiz in quizzes.items %} <p>{{ quiz.name }}</p>{% endfor %}
{% for quiz_slug, quiz in quizzes.items %} <p><a href="?">{{ quiz.name }}</a></p>{% endfor %}
{% for quiz in quizzes %} <p><a href="{% url "quiz_page" quiz.quiz_number %}”> {{ quiz.name }} </a></p>{% endfor %}
url(r"^quiz/([0-9]+)/$", views.quiz, name="quiz_page"),
<p><a href="/quiz/1/"> Klassiska böcker</a></p>
Projektet
.get()
templates
models.py
<html>
views.pyurls.py
/quiz/1 def quiz()