Czas wykorzystać konfiguracje URL-i, którą już raz zmieniałem (plik
urls.py
). Pierwsza wprawka w DB (rozdział 3) po uproszczeniu przeze mnie wygląda następująco:
from django.http import HttpResponse
import datetime
def current_datetime(request):
html = "Jest %s" % datetime.datetime.now()
return HttpResponse(html)
Zapisujemy to do pliku
views.py
.Warto sobie znowu na boku odpalić terminal i
./manage.py shell
a potem: from mdjango.mbegin.views import *
(wszystkie kolejne sprawdzenia będę najpierw przeprowadzał w konsoli, więc nie będę juz pisał o jej odpalaniu).
Odpalamy
current_datetime()
, powinien nam się pojawić błąd. Wynika on z tego, że próbowałem wykorzystać konsolę do wypisania HTTPResponse.Teraz już zmiana konfiguracji URL-i: dodajemy import pliku z widokami i konfiguracje przekierowania w przypadku wywołania adresu http://localhost:8080/czas/.
plik
urls.py
wygląda teraz tak:
from django.conf.urls.defaults import *
from mdjango.mbegin.views import *
urlpatterns = patterns('',
(r'^czas/', current_datetime),
(r'^admin/', include('django.contrib.admin.urls')),
)
I powoduje pokazanie....błędu. Przy okazji okazuje się jak django pokazuje błedy, jak dla mnie całkiem przejrzyście i tego właśnie bym oczekiwał od informacji o błędzie. Jest stos, jest zapytanie, jest konfiguracja. Chyba nie muszę już pisać o kolejnym plusie. Zauważyłem również możliwość przełączania pomiędzy trybami oglądania informacji o błędzie. Sam błąd to:
AttributeError at /czas/ 'function' object has no attribute 'rindex'
oznacza on, że DB jest do przodu w stosunku do mojego Ubuntu. Tak jak napisałem URL-e docelowe, można je pisać dopiero od wersji 0.96 a ja mam 0.95. Na razie daruję sobie podnoszenie wersji (warto znać różne metody obejścia problemu). Rozwiazaniem jest napisanie nazwy funkcji jako stringa poprzedzonego nazwą aplikacji i modułu. Więc ostatecznie wygląda to tak:
from django.conf.urls.defaults import *
from mdjango.mbegin.views import *
urlpatterns = patterns('',
(r'^czas/', 'mbegin.views.current_datetime'),
(r'^admin/', include('django.contrib.admin.urls')),
)
Przy okazji upraszczania zrobiłem jeszcze jeden błąd: W ramach upraszczania nie napisałem parametru request dla funkcji current_datetime, jest on oczywiście potrzebny. Po poprawieniu usterek widać skromną, ale własną, pierwszą stronę wykonaną przy uzyciu django. Teraz już pójdzie z górki, ale to już w następnym odcinku. A na dzisiaj ostatni element, żeby mieć poprawny czas, trzeba ustawić
TIME_ZONE = 'Europe/Warsaw'
(lub jak kto woli mieć ustawione) w settings.py
, no chyba, że ktoś mieszka w tej samej strefie czasowej co Chicago
Brak komentarzy:
Prześlij komentarz