Poprzedni wpis (Introducing django-confirmation) | Następny wpis (It's 25, baby!)

Eureka!

Pomimo tego, że robię w Django od paru lat, wciąż zdarzają mi się odkrycia na miarę archimedejskiej eureki. Dziś właśnie zauważyłem, że skrót render_to_response może przyjmować jako pierwszy argument nie tylko nazwę szablonu, ale także listę nazw szablonów. Dzięki temu wiekopomnemu odkryciu kod, który wyglądał dość marnie:

templates = [
    'flagging/%s_flagging_form.html' % obj._meta.module_name,
    'flagging/flagging_form.html',
]
template = loader.select_template(templates)
return HttpResponse(template.render(ctx))

teraz może wyglądać trochę ładniej:

templates = [
    'flagging/%s_flagging_form.html' % obj._meta.module_name,
    'flagging/flagging_form.html',
]
return render_to_response(templates, ctx)

Świadomie używam określeń ładnie i brzydko, bo chodzi tu jedynie o estetykę (obydwa warianty robią dokładnie to samo pod spodem).

Na swoje usprawiedliwienie mogę powiedzieć tylko tyle, że takie zachowanie render_to_response jest obecnie nieudokumentowane (ale zgłosiłem odpowiedniego patcha).

Komentarze (2)

#1 Secator skomentował(-a) 27 listopada 2008 o 22:49

Powiedziałbym że to jest w DjangoBooku w jednym z pierwszych 3 rozdziałów (nie licząć wstępu), ale nie będe cie denerwował :):) :P

#2 jarek skomentował(-a) 28 listopada 2008 o 09:31

Widzisz, być może... Ale w dokumentacji Django tego nie ma, a jak dla mnie to jest autorytatywne źródło informacji.

Skomentujesz?

* 


* 


* oznacza pole wymagane

Technikalia

  • XP-Dev.com: Free Subversion Hosting
  • A Django joint.
  • Python powered