Archive for Sierpień, 2009

Django: alternatywa dla Form.as_table()

Domyślna struk­tura gene­ro­wana przez metodę django.forms.Form.as_table pozo­sta­wia nieco do życze­nia. Stąd nieco wygod­niej­sza i nie­in­wa­zyjna wer­sja w postaci fil­tra (zasta­na­wiam się, czemu ta wbu­do­wana w Django ma postać metody):

from django.template.loader import render_to_string

@register.filter
def as_table(form):
return render_to_string(‘form_as_table.html’, {‘form’: form})

Do kom­pletu przy­kła­dowy szablon:

{% for f in form %}
{% if f.errors %}
<tr […]

Django: Decimal i simplejson

Moduł django.utils.simplejson nie obsłu­guje domyśl­nie typu decimal.Decimal. Na szczę­ście da się podać wła­sny mecha­nizm kodo­wa­nia nieznanych typów:

import deci­mal

def json_encoder(value):
if isinstance(value, decimal.Decimal):
return float(str(value))
else:
raise TypeError

from django.utils import simplejson

print simplejson.dumps([decimal.Decimal(‘1.2′)], default=json_encoder)

Python: Utop sierotki w zupie

Ot, taki znak, że nie umar­łem. Dziś w pro­gra­mie dość popu­larny błąd składu, choć wielu uważa, że inter­netu reguły nie doty­czą. A sie­rotki wykończymy tak:

import re

def sierotki(text):
reg = re.compile(u’\b(a|i|o|u|w|z)\b\s+’)
return reg.sub(u’\1u00a0’, text)

Nie­stety, na ogół mamy do czy­nie­nia z tek­stem zawie­ra­ją­cym znaczniki:

import re
from Beau­ti­ful­Soup import BeautifulSoup

def sierotki(text):
[…]

Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Poland
This work by Patryk Zawadzki is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Poland.