Szukając wpisów z tagiem
django znalazłem:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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