Open Source

Społeczność

Ta strona, odświeżana co godzinę, zbiera wpisy z blogów na tematy związane z Django

MySQLdb zje także i Twojego psa

Posted on Październik 22, 2008 at 11:30 po południu by Jarek Zgoda RSS

Przynajmniej Pythoniarze powinni się trzymać z daleka od tej bazy, bo jej adapter jest obciążony kilkoma bardzo, ale to bardzo poważnymi błędami (abstrahując zupełnie od problemów, jakie ta baza ma sama ze sobą): brak obsługi pochodnych klasy unicode, bolesne szczególnie dla tych, co robią w Django; wyciek przy zdefiniowanym kodowaniu ...

Przeczytaj cały wpis »

Środa, więc będzie o środowisku

Posted on Październik 22, 2008 at 9:53 po południu by Jarek Zgoda RSS

Czas przyszedł, żeby pochwalić się środowiskiem developerskim. Na linuksie było różowo, na Macu już tak różowo nie jest, ale wydaje mi się, że doszedłem wreszcie do stanu, że infrastruktura nie przeszkadza mi w programowaniu, a środowisko z czasem mi się zintegrowało. Więc jak wygląda to środowisko programisty aplikacji webowych? TextMate ...

Przeczytaj cały wpis »

Moja prezentacja z PyCon PL 2008

Posted on Październik 20, 2008 at 2:07 po południu by Rafał Jońca RSS

Umieściłem na stronie projektów linki do prezentacji o godzeniu Django z Google App Engine, która wygłosiłem 19 października 2008 w Rybniku na PyCon PL 2008. Poniżej przedstawiam bezpośrednie łącza. W demie usunąłem kod SDK, więc trzeba go pobrać osobno, jeśli chce się uruchomić aplikacje: Prezentacja Kod

Przeczytaj cały wpis »

Newbies atakują

Posted on Październik 16, 2008 at 9:49 rano by Jarek Zgoda RSS

Jak w Django odczytać dane z pliku? Once again, I think you're confusing ideas here; Django is simply a set of Python libraries you use to write code, in Python, for web applications. The code in your Django applications is Python code. Not some sort of special separate "Django ...

Przeczytaj cały wpis »

„Django - 3 lata pracy i wszystko, co mamy, to marne 1.0″

Posted on Październik 13, 2008 at 9:43 po południu by Marcin Kaszyński RSS

Z okazji wydania Django 1.0 na ostatnim Bootstrapie opowiedziałem o najważniejszych zmianach, jakie zaszły w tej ramówce podczas tych trzech lat, które upłynęły od momentu otwarcia kodu. Slajdy z mojej prezentacji: Reklama: już wkrótce odbędzie się pierwsza edycja warsztatów Django – najszybszy sposób na poznanie możliwości tego środowiska i rozpoczęcie pracy.

Przeczytaj cały wpis »

Kilka luźnych refleksji na temat GAE i Django

Posted on Październik 12, 2008 at 8:38 po południu by GeekSpace (Tomasz Elendt) RSS

Jakiś czas temu miałem okazję pobawić się Google App Engine. Ten wpis zawiera kilka luźnych refleksji na temat tego środowiska. Zacznijmy od ograniczeń. Większość z nich wymienił Riklaunim w artykule ”Co to jest Google App Engine?” (polecam również resztę artykułów o Google App Engine z Biblioteki Riklaunima). Przeglądając opinie polskiej blogosfery dochodzę do wniosku, że najczęściej wymienianym ograniczeniem jest brak dostępu do relacyjnej baz danych. Nie wszyscy chyba rozumieją, że to ograniczenie wynika z przyjętej architektury. Prawdę powiedziawszy, nie jest to wcale ograniczenie, tak tylko odbierane jest to przez webdeveloperów przyzwyczajonych w większości do relacyjnego modelu bazy danych (niekoniecznie prawdziwe w przypadku programistów Zope). Googlowy framework webapp z całą pewnością nie powala funkcjonalnością. Dostarcza on jedynie minimalną liczbę elementów niezbędnych do zbudowania aplikacji webowej, ale nic ponadto. Na szczęście istnieje możliwość użycia dowolnego frameworka zgodnego z interfejsem WSGI. Może jednak zdarzyć się tak, że większość frameworka (zwłaszcza ta silniej związana z systemem ORM) okaże się bezużyteczna. Widoczne jest to zwłaszcza we frameworkach przedkładających filozofię “Don’t make me think” nad filozofią “Let me choose” z których najlepszym przykładem jest chyba Django. Trochę informacji o tym jak pogodzić GAE z Django można zdobyć oglądając prezentacje Guido van Rossuma. Prezentację o zbliżonej tematyce ...

Przeczytaj cały wpis »

Kilka luźnych refleksji na temat GAE i Django

Posted on Październik 12, 2008 at 8:38 po południu by GeekSpace (Tomasz Elendt) RSS

Jakiś czas temu miałem okazję pobawić się Google App Engine. Ten wpis zawiera kilka luźnych refleksji na temat tego środowiska. Zacznijmy od ograniczeń. Większość z nich wymienił Riklaunim w artykule ”Co to jest Google App Engine?” (polecam również resztę artykułów o Google App Engine z Biblioteki Riklaunima). Przeglądając opinie polskiej blogosfery dochodzę do wniosku, że najczęściej wymienianym ograniczeniem jest brak dostępu do relacyjnej baz danych. Nie wszyscy chyba rozumieją, że to ograniczenie wynika z przyjętej architektury. Prawdę powiedziawszy, nie jest to wcale ograniczenie, tak tylko odbierane jest to przez webdeveloperów przyzwyczajonych w większości do relacyjnego modelu bazy danych (niekoniecznie prawdziwe w przypadku programistów Zope). Googlowy framework webapp z całą pewnością nie powala funkcjonalnością. Dostarcza on jedynie minimalną liczbę elementów niezbędnych do zbudowania aplikacji webowej, ale nic ponadto. Na szczęście istnieje możliwość użycia dowolnego frameworka zgodnego z interfejsem WSGI. Może jednak zdarzyć się tak, że większość frameworka (zwłaszcza ta silniej związana z systemem ORM) okaże się bezużyteczna. Widoczne jest to zwłaszcza we frameworkach przedkładających filozofię “Don’t make me think” nad filozofią “Let me choose” z których najlepszym przykładem jest chyba Django. Trochę informacji o tym jak pogodzić GAE z Django można zdobyć oglądając prezentacje Guido van Rossuma. Prezentację o zbliżonej tematyce ...

Przeczytaj cały wpis »

Kilka luźnych refleksji na temat GAE i Django

Posted on Październik 12, 2008 at 8:38 po południu by GeekSpace (Tomasz Elendt) RSS

Jakiś czas temu miałem okazję pobawić się Google App Engine. Ten wpis zawiera kilka luźnych refleksji na temat tego środowiska. Zacznijmy od ograniczeń. Większość z nich wymienił Riklaunim w artykule ”Co to jest Google App Engine?” (polecam również resztę artykułów o Google App Engine z Biblioteki Riklaunima). Przeglądając opinie polskiej blogosfery dochodzę do wniosku, że najczęściej wymienianym ograniczeniem jest brak dostępu do relacyjnej baz danych. Nie wszyscy chyba rozumieją, że to ograniczenie wynika z przyjętej architektury. Prawdę powiedziawszy, nie jest to wcale ograniczenie, tak tylko odbierane jest to przez webdeveloperów przyzwyczajonych w większości do relacyjnego modelu bazy danych (niekoniecznie prawdziwe w przypadku programistów Zope). Googlowy framework webapp z całą pewnością nie powala funkcjonalnością. Dostarcza on jedynie minimalną liczbę elementów niezbędnych do zbudowania aplikacji webowej, ale nic ponadto. Na szczęście istnieje możliwość użycia dowolnego frameworka zgodnego z interfejsem WSGI. Może jednak zdarzyć się tak, że większość frameworka (zwłaszcza ta silniej związana z systemem ORM) okaże się bezużyteczna. Widoczne jest to zwłaszcza we frameworkach przedkładających filozofię “Don’t make me think” nad filozofią “Let me choose” z których najlepszym przykładem jest chyba Django. Trochę informacji o tym jak pogodzić GAE z Django można zdobyć oglądając prezentacje Guido van Rossuma. Prezentację o zbliżonej tematyce ...

Przeczytaj cały wpis »

Django feeds (twisted way)

Posted on Październik 11, 2008 at 9:48 po południu by Jarek Zgoda RSS

Yesterday on #django-newbie IRC channel somebody asked, if it is possible to create syndication feed that gets items filtered by some parameter, that does not come from the URL, but comes from the request instead. Barely remembering my previous work with feeds I replied that there has to be some ...

Przeczytaj cały wpis »

django.forms mnie pokonało (przynajmniej trochę)

Posted on Październik 8, 2008 at 9:21 rano by Jarek Zgoda RSS

Robiąc ostanio w Django trafiłem na pewien problem, którego nie jestem w stanie rozwiązać (przynajmniej elegancko) do dziś. Załóżmy, że mamy klasę, reprezentującą formularz. Ma ona sobie jakieś pola, powiedzmy: class MyForm(forms.Form): name = forms.CharField(label='name') description = forms.CharField(label='description', widget=forms.Textarea) class Media: js ...

Przeczytaj cały wpis »

Warsztaty Django

Posted on Październik 5, 2008 at 4:15 po południu by Perełki Django RSS

Marcin Kaszyński organizuje w Warszawie warsztaty Django. Będzie można na nich dowiedzieć się od podstaw jak działa Django i co w nim siedzi. Warsztaty są skierowane dla ludzi niezorientowanych w tej technologi, ale również dla tych, co robią już pierwsze kroki. Jedyne wymaganie, to...

Przeczytaj cały wpis »

Django na Bootstrapie

Posted on Październik 4, 2008 at 2:56 po południu by Marcin Kaszyński RSS

Już w przyszłym tygodniu Bootstrap 8.10. Andy Budd opowie o testach użyteczności (“Guerilla Usability Testing with Silverback”), a ja ponarzekam na Django ("Django - 3 lata prac i wszystko, co mamy, to marne 1.0"). Serdecznie zapraszamy.

Przeczytaj cały wpis »

Skróty: render_to_response

Posted on Październik 1, 2008 at 3:27 po południu by Marcin Kaszyński RSS

Twórcy Django są bardzo skuteczni w eliminowaniu miejsc, które wymagałyby złamania zasady DRY. Tym dziwniejszy jest wyjątek render_to_response: teoretycznie skrót, w praktyce – funkcja wymagająca codziennego wpisywania prawie identycznego kodu. Wygląda to tak:   from django.shortcuts import render_to_response from django.template import RequestContext def some_view(request): return render_to_response('testapp/some_view.html', [...]

Przeczytaj cały wpis »

Warsztaty IT - Django

Posted on Wrzesień 26, 2008 at 5:48 po południu by Marcin Kaszyński RSS

Chcecie dowiedzieć się, o co chodzi w całym tym Django? A może znacie kogoś, kto chce? Właśnie uruchomiłem stronę z informacją o nadchodzących warsztatach "Tworzenie aplikacji w Django" Więcej informacji na stronie.

Przeczytaj cały wpis »

Resetowanie zapomnianego hasła w Django 1.0

Posted on Wrzesień 26, 2008 at 2:48 rano by Biblioteka Pythona | Django RSS

Widoki resetowania hasła i zasadach ich działania zmieniła się w Django 1.0, o czym trochę zapomniała dokumentacja. Najprostsze wykorzystanie widoków resetowania hasła to dodanie ich do urlconf: import django.contrib.auth.views .... (r'^password_reset/$', 'django.contrib.auth.views.password_reset'), (r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'), (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'), (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'), Szablony znajdują się w django/contrib/admin/templates/registration i nadają się do użytku, lecz są w stylu panelu admina. Można podać ścieżki do własnych: (r'^password_reset/$', 'django.contrib.auth.views.password_reset', {'template_name':'userpanel/password_reset_form.html', 'email_template_name':'userpanel/password_reset_email.html'}), (r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', {'template_name':'userpanel/password_reset_done.html'}), (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', {'template_name':'userpanel/password_reset_confirm.html'}), (r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete', {'template_name':'userpanel/password_reset_complete.html'}), Problemy wystąpią, gdy mamy te widoki obudowane we własne widoki. Na starcie dostaniemy parę wyjątków NoReverseMatch: Reverse for 'yourapp.django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments.... Do dwóch widoków i szablonu należy dodać post_reset_redirect zawierający URL do następnego widoku: password_reset - URL dla password_reset_done password_reset_confirm - URL dla password_reset_complete password_reset_email.html - W tagu URL trzeba podać jakoś link do password_reset_confirm: {% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %} Przykład: def password_reset(request): """ django.contrib.auth.views.password_reset view (forgotten password) """ if not request.user.is_authenticated(): return django.contrib.auth.views.password_reset(request, template_name='userpanel/password_reset_form.html', email_template_name= 'userpanel/password_reset_email.html', post_reset_redirect='/user/password_reset/done/') else: return HttpResponseRedirect("/user/") Nazwa domeny w treści emaila brana jest z aplikacji Sites (jak nie ma to pewnie bierze domenę strony) i jeżeli coś w Sites zmienimy to musimy zrestartować serwer by w mailach widoczna była ta zmiana..c { color: #408080; font-style: italic } /* ...

Przeczytaj cały wpis »