Anwajler.com -> Blog
Szukając wpisów z tagiem django znalazłem:

Django: SplitDateTimeWidget i JS

2008-07-01 22:11:34.248435
django js widget newforms

Żeby nie męczyć się z łączeniem dwóch osobnych inputów - osobno attrs='vDateField required' oraz attrs='vTimeField required' można to nieco zautomatyzować, poprzez drobne zmodyfikowanie kodu JS z admina i wrzucenie go do swojej aplikacji.
Czytaj więcej


Instalacja Django/Python2.5 @ Debian Etch

2008-06-20 02:29:13.235314
python django debian etch

W Debianie Etch (stable) domyślną wersją Pythona jest 2.4. Można jednak nieco oszukać system, usuwając symlinka:

/usr/bin/python -> python2.4
/usr/bin/python -> python2.4

i ustanawiając nowego:
/usr/bin/python -> python2.5
/usr/bin/python -> python2.5


Instalacja django sprowadza się do ściągniecia źródeł z SVN i użycia setup.py.

Następnie trzeba zainstalować od nowa mod_pythona (z paczki) oraz zainstalować z użyciem setuptoolsów MySQLdb, psycopg2 bądź inny soft łączący Pythona z odpowiednią bazą danych.

Najważniejsze w tym wszystkim jest to, że mod_python musi być zainstalowany po zmianie symlinka, a oprogramowanie Python<=>baza zainstalowane ręcznie z użyciem Pythona2.5.

Uwaga: Nie udało mi się zmusić do działania Django z MySQLdb (tylko na Pythonie 2.5), natomiast przy SQLite3 oraz PostgreSQL nie było żadnych problemów. Na Ubuntu, gdzie domyślnie miałem Pythona 2.5 wszystko działało dobrze.
Czytaj więcej


ValueError: too many values to unpack

2008-05-26 14:16:02.377713
python django error

Przytrafiło mi się popełnienie następującego errora, który wyskoczył po odpaleniu 'syncdb':

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 272, in execute_manager
    utility.execute()
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 219, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.5/site-packages/django/core/management/base.py", line 72, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/lib/python2.5/site-packages/django/core/management/base.py", line 86, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/python2.5/site-packages/django/core/management/base.py", line 168, in handle
    return self.handle_noargs(**options)
  File "/usr/lib/python2.5/site-packages/django/core/management/commands/syncdb.py", line 95, in handle_noargs
    emit_post_sync_signal(created_models, verbosity, interactive)
  File "/usr/lib/python2.5/site-packages/django/core/management/sql.py", line 489, in emit_post_sync_signal
    verbosity=verbosity, interactive=interactive)
  File "/usr/lib/python2.5/site-packages/django/dispatch/dispatcher.py", line 360, in send
    **named
  File "/usr/lib/python2.5/site-packages/django/dispatch/robustapply.py", line 47, in robustApply
    return receiver(*arguments, **named)
  File "/usr/lib/python2.5/site-packages/django/contrib/auth/management.py", line 27, in create_permissions
    for codename, name in _get_all_permissions(klass._meta):
ValueError: too many values to unpack
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 272, in execute_manager
utility.execute()
File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 219, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python2.5/site-packages/django/core/management/base.py", line 72, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/lib/python2.5/site-packages/django/core/management/base.py", line 86, in execute
output = self.handle(*args, **options)
File "/usr/lib/python2.5/site-packages/django/core/management/base.py", line 168, in handle
return self.handle_noargs(**options)
File "/usr/lib/python2.5/site-packages/django/core/management/commands/syncdb.py", line 95, in handle_noargs
emit_post_sync_signal(created_models, verbosity, interactive)
File "/usr/lib/python2.5/site-packages/django/core/management/sql.py", line 489, in emit_post_sync_signal
verbosity=verbosity, interactive=interactive)
File "/usr/lib/python2.5/site-packages/django/dispatch/dispatcher.py", line 360, in send
**named
File "/usr/lib/python2.5/site-packages/django/dispatch/robustapply.py", line 47, in robustApply
return receiver(*arguments, **named)
File "/usr/lib/python2.5/site-packages/django/contrib/auth/management.py", line 27, in create_permissions
for codename, name in _get_all_permissions(klass._meta):
ValueError: too many values to unpack


Trochę głowiłem się nad rozwiązaniem, ale jak się okazało wystarczyło zadbać o ostatni przecinek w krotkach związanych z uprawnieniami:

class Meta:
        permissions = (
            ("can_drive", "Can drive"),
            ("can_vote", "Can vote in elections"),
            ("can_drink", "Can drink alcohol"), # <- o ten przecinek chodzi
        )
class Meta:
permissions = (
("can_drive", "Can drive"),
("can_vote", "Can vote in elections"),
("can_drink", "Can drink alcohol"), # <- o ten przecinek chodzi
)

Czytaj więcej


Django i skrypty obsługiwane z zewnątrz

2008-01-07 19:09:16.567919
python django cron

Jeżeli piszemy aplikację, która zarządza określonym gronem użytkowników to najczęściej potrzebujemy dołączyć do niej skrypt, który będzie odpalany co jakiś czas, by wywołać określone skutki (kasować nieaktywnych, wysyłać maile itd). Oto przykładowy skrypt Django, który możemy swobodnie dodać do crona lub innego daemona.
Czytaj więcej


Django: informowanie o stanie

2008-01-05 17:51:05.512078
python django signals save delete dispatcher

W Django istnieją dwa sposoby na informowanie o tym, co się dzieje w samej aplikacji lub w obiektach. Jednym z nich jest nadpisywanie (ang. overriding) metod obiektu a drugim użycie PyDispatchera. Postaram się zwięźle zaprezentować obie możliwości.
Czytaj więcej


Django: obiekt User poza requestem

2008-01-02 23:40:13.689646
django user object request threadlocals

Zdarzało mi się, że podczas edytowania niektórych obiektów, które zawierały klucze obce do obiektu User Django wyrzucało błąd. Nie pomagało przekazywanie do danej formy informacji z requesta lub wyciąganie ich z bazy danych. Okazało się jednak, że istnieje middleware, który pomaga rozwiązać ten problem.
Czytaj więcej


Django: SelectDate Widget

2008-01-02 18:23:29.210874
django widget

Oto kod, który umożliwi użycie SelectDate Widgeta oraz edycji istniejącej instancji. Kod generuje roczniki osób pełnoletnich.

# model
YEAR_LIST = range(1900, datetime.datetime.now().year - 17)

class JakisModel(models.Model):
    birthdate = models.DateField(_('Date of birth'))

#forma
class JakasForma(ModelForm):
    birthdate = forms.DateField(widget=SelectDateWidget(years=YEAR_LIST))

#kodzik
...
jakis_model_instancja = JakisModel.objects.get(id=1)
data = {'birthdate_year': jakis_model_instancja.birthdate.year,
            'birthdate_month': jakis_model_instancja.birthdate.month, 
            'birthdate_day': jakis_model_instancja.birthdate.day}
form_full_user = JakasForma(data, instance=jakis_model_instancja)
# model
YEAR_LIST = range(1900, datetime.datetime.now().year - 17)

class JakisModel(models.Model):
birthdate = models.DateField(_('Date of birth'))

#forma
class JakasForma(ModelForm):
birthdate = forms.DateField(widget=SelectDateWidget(years=YEAR_LIST))

#kodzik
...
jakis_model_instancja = JakisModel.objects.get(id=1)
data = {'birthdate_year': jakis_model_instancja.birthdate.year,
'birthdate_month': jakis_model_instancja.birthdate.month,
'birthdate_day': jakis_model_instancja.birthdate.day}
form_full_user = JakasForma(data, instance=jakis_model_instancja)


Bez podania osobno field_year, month i day nie zadziała. Sam widget jest dostępny tylko w testach, w dokumentacji ani słowa.
Czytaj więcej


Django: kolejna zmiana w newforms

2007-12-23 22:59:30.790296
django python newforms

Uwaga! Kolejna zmiana w newforms! Od wersji 6915:

# Wcześniej:

# przy dodawaniu
obj = MyObj()
form = MyForm(obj)

# przy edycji
obj = MyObj.objects.get(pk=1)
form = MyForm(obj)

# Teraz:

# przy dodawaniu
form = MyForm()

# przy edycji
obj = MyObj.objects.get(pk=1)
form = MyForm(instance=obj)
# Wcześniej:

# przy dodawaniu
obj = MyObj()
form = MyForm(obj)

# przy edycji
obj = MyObj.objects.get(pk=1)
form = MyForm(obj)

# Teraz:

# przy dodawaniu
form = MyForm()

# przy edycji
obj = MyObj.objects.get(pk=1)
form = MyForm(instance=obj)

Czytaj więcej


Django: full-text search

2007-12-23 16:20:39.893133
django sphinx full-text

Jarosław Zabiełło bardzo sobie chwalił [blog.zabiello.com] użycie Sphinksa [sphinxsearch.com]. Okazuje się, że jest już projekt, dzięki któremu można użyć go w Django, przy korzystaniu z djangowego ORM. Projekt [code.google.com] opublikowany został na licencji GPL.
Czytaj więcej


Django: zmiana hasła w newforms

2007-12-14 17:59:15.698197
django newforms python

Oto krótki kod, służący do zmiany hasła, korzystający z Django newforms.
Czytaj więcej


Django: newforms rządzą!

2007-12-11 12:27:51.554774
django newforms modelform python

Formy w Django to było coś skomplikowanego. Oldforms, newforms, form_for_model a i tak trzeba było robić własne klasy do formularzy, bo rzadko kiedy wszystko zgadzało się dokładnie z modelem. DRY nie było zbyt mocną stroną tych rozwiązań. Na szczęście warto podkreślić słowo było, bo pojawił się moduł ModelForm - i teraz formy to czysta przyjemność!
Czytaj więcej


Precyzja zabija

2007-12-11 01:56:13.433323
joke humor django

Nie mogłem się powstrzymać, żeby tego nie zamieścić. Śmiałem się z tego długo i serdecznie :) Oto do czego prowadzi nieprecyzyjne formułowanie pytań, a w tym przypadku literówka. Nie to, że mi się nigdy nie zdarzyło :) Po prostu coś na poprawienie humoru o godzinie prawie drugiej w nocy.
Czytaj więcej


PayPal PDT+IPN w Django

2007-12-10 19:21:12.873962
paypal pdt django http python

Miałem tę (nie)przyjemność przekopać się przez API PayPala. Implementowałem opcję 'Buy now'/'Donation' i postanowiłem zapisać kilka przydatnych wskazówek.
Czytaj więcej


Django i ImageField

2007-12-09 02:10:29.255327
django imagefield upload python

Bardzo często widać na necie pytania dotyczące funkcjonowania modeli w Django, a najpopularniejsze są tam ImageField oraz FileField. Chciałbym zaprezentować pełne rozwiązanie oparte o "Customizing filenames without patching Django" [gulopine.gamemusic.org], uzupełnione o świetne funkcje Python Imaging Library.
Czytaj więcej


Slugi po polsku

2007-11-22 15:04:03.139507
django urlify

Nawet się człowiek nie obejrzał, a panowie z Django dołączyli [code.djangoproject.com] wysłaną przeze mnie lokalizację urlify do trunka. Mój pierwszy, bardzo skromny wkład w rozwój Django ;-) Przy okazji zachęcam każdego do udzielania się na rzecz tego projektu, nawet jeśli ma się to przejawiać w tak błahych kwestiach jak ta wyżej wymieniona..
Czytaj więcej


Łukasz Anwajler

W skrócie: jestem webdeveloperem, użytkownikiem Uniksa, miłośnikiem wolności. Nie lubię się nudzić. Więcej o mnie, kontakt ze mną.

O blogu

Prowadzę tego bloga, ponieważ wiele wyniosłem czytając wypowiedzi innych, dotyczące technicznych zagadnień. Myślę zatem, że komuś może przydać się porcja informacji o rzeczach, którymi aktualnie się zajmuję. Coś biorę z Sieci, coś daję w zamian.

Tagi

Teleportuj się za pomocą słów-kluczy:

the-man-from-the-earth kontakt sphinx upload warlug wikia mac mktime newforms wykład request film grono threadlocals hosting paypal xul firewall pdt citizendum player etch modelform hacking delete xml dcraw humor css gnome object widget full-text youtube medycyna wolność cron puma firefox rozszerzenie mysql wiki update kultura wikipedia user python dreamhost lisp etyka security framebuffer pyzenity html thunderbird wap error 2007 sbcl bartoszewski podsumowanie xsl ubuntu portal historia linux joke apple patriotyzm universal save nef meebo slime p2p debian http internet web2py django extension anwajlercom js signals urlify datetime tramline svn imagemagick życie nikon multimedia firma foto SLIME im mozilla approacher leopard phishing imagefield wpadka zenity search dispatcher javascript uw emacs plusgsm prawo time społecznie

Copyright © Łukasz Anwajler. Code & design: Łukasz Anwajler. HTML oraz CSS zgodne ze standardami W3C Powered by Django.