" print "
" print "Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Krzysztof Ciebiera na podstawie http://www.djangobook.com/
Django cz.1 Krzysztof Ciebiera na podstawie
2
Jak działa CGI? import MySQLdb print "Content-Type: text/html" print
print "<html><head><title>Books</title></head>" print "<body>" print "<h1>Books</h1>" print "<ul>" connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db') cursor = connection.cursor() cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
3
Jak działa CGI? for row in cursor.fetchall():
print "<li>%s</li>" % row[0] print "</ul>" print "</body></html>" connection.close()
4
Wady CGI Dlaczego musimy się łączyć w ten sposób z bazą danych?
Czy sami powinniśmy pamiętać o Content-Type i zamknięciu bazy danych? Jak używać tego samego kodu w różnych konfiguracjach? Co ma robić projektant stron, nie znający pythona?
5
Model MVC model – zawiera opis danych widok – zawiera logikę
mapowanie – mówi jaki url uruchamia którą funkcję szablon – pokazuje jak to wyświetlać
6
Model # models.py (the database tables) from django.db import models
class Book(models.Model): name = models.CharField(maxlength=50) pub_date = models.DateField()
7
Widok # views.py (the business logic)
from django.shortcuts import render_to_response from models import Book def latest_books(request): book_list = Book.objects.order_by('- pub_date')[:10] return render_to_response('latest_books.html', {'book_list': book_list})
8
Mapowanie # urls.py (the URL configuration)
from django.conf.urls.defaults import * import views urlpatterns = patterns('', (r'latest/$', views.latest_books), )
9
Szablon # latest_books.html (the template)
<html><head><title>Books</title></head> <body> <h1>Books</h1> <ul> {% for book in book_list %} <li>{{ book.name }}</li> {% endfor %} </ul> </body></html>
10
Jak uruchomić Django? Potrzebny jest python
django-admin.py startproject mysite __init__.py manage.py settings.py urls.py python manage.py runserver 8080
11
Najprostsza aplikacja
from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html) Ale skąd system wie, że tą funkcję trzeba uruchomić?
12
Mapowanie aplikacji from django.conf.urls.defaults import *
from mysite.views import current_datetime urlpatterns = patterns('', (r'^time/$', current_datetime), )
13
Wyrażenia regularne . (kropka) cokolwiek \d cyfra [A-Z] wielka litera
[a-z] mała litera [A-Za-z] jakakolwiek litera + jeden lub więcej [^/] wszystko oprócz ukośnika * zero lub więcej {1,3} między jeden a trzy
14
Jak to działa Django importuje settings.py Ustawia ROOT_URLCONF
UrlConf odpowiada za przekazanie żądania do widoku (mamy słabe wiązania) Widok odpowiada za zwrócenie HttpResponse Naprawdę to jest odrobinkę bardziej skomplikowane!
15
Dynamiczne URL mapowanie
from django.conf.urls.defaults import * from mysite.views import current_datetime, hours_ahead urlpatterns = patterns('', (r'^time/$', current_datetime), (r'^time/plus/(\d{1,2})/$', hours_ahead), )
16
Dynamiczne URL obsługa
def hours_ahead(request, offset): offset = int(offset) dt = datetime.datetime.now() + datetime.timedelta(hours=offset) html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt) return HttpResponse(html) Komunikaty o błędach są sensowne!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.