django-annoying

A django-annoying az alkalmazásunkhoz illeszthető komponens, amely a Django keretrendszer szolgáltatásait bővíti ki vagy módosítja annak felületét annak érdekében, hogy megszűntesse a keretrendszer fájó pontjait. A django.shortcuts modullal maga a Django is számos ponton segíti a repetitív kódok mellőzését, de közel sem fedi le a problémák teljes körét.

A Django nyújtotta get_object_or_404() függvénnyel például egy hívásba sommázható egy gyakran alkalmazott logika. Néha azonban milyen kényelmes volna, ha nem kötnék meg a kezünket azzal, hogy nyomban HTTP válasszal visszatérjünk: erre szolgál az annoying beszédes get_object_or_None() függvénye.

Ennél talán még praktikusabb a render_to() dekorátor, amely felváltja a Django alapértelmezett nézeteinek kérést kap, válasszal felel viselkedését a kérést kap, kontextus szótárt ad vissza megközelítéssel. Ez akkor nyer igazán értelmet, ha idevesszük az annoyinggal érkező ajax_request() burkolót is. Innentől kezdve ugyanazon nézetek eltérő dekorásával szabályozhatjuk a kimenet típusát.

def _post_detail(request, post_id):
    post = get_object_or_404(Post, post_id)
    return {'post': post}

@render_to('posts/post_detail.html')
def post_detail(request, post_id):
    return _post_detail(request, post_id)

@ajax_request
def post_detail(request, post_id):
    return _post_detail(request, post_id)

(Mindkét burkoló fel van készítve, hogy ha a nézet visszatérési értéke nem szótár típusú, akkor a visszatérési értéket adják ők is vissza, így menetközben tetszőleges HTTP válasszal egyből visszatérhetünk, ha szükséges – lásd get_object_or_404().)

A django-annoying teljes eszköztára példákkal illusztrálva a projekt wikijében fellapozató.

05nov.

Szólj hozzá