viernes, 30 de agosto de 2013

Django desde un template llamar a un procedimiento del primer objeto de un query

Puede usarse el with con esta sintaxis:

<img {% with im.inmuebleimagen_set.all|first as imagen %}
src="{{imagen.get_url}}"{%endwith%}
/>

martes, 27 de agosto de 2013

Django cambiar de lenguaje desde el view

Para cambiar el LANG en el servidor, asumiendo que tenemos todo el sistema de traducción correctamente configurado, llamamos via POST a la ficha setlang y le pasamos el campo language con la lengua seleccionada:

En settings definimos los lenguajes con los que trabajamos:

LANGUAGES = (
    ('es', ugettext(u'Español')),
    ('de', ugettext(u'German')),
    ('en', ugettext(u'English')),
);


En urls, incluimos las url de i18n:

(r'^i18n/', include('django.conf.urls.i18n')),


Y ya en el template podemos llamar a la ficha /i18n/setlang para setear el lenguaje:

<li class="gbt">
    <form name="setLangSpanish" action="/i18n/setlang/" method="POST">{% csrf_token %}
        <input name="next" type="hidden" value="/" />
        <input type="hidden" name="language" value="es" />
        <a href="#" class="language_off" onclick="document.setLangSpanish.submit();return false;">
            <span class="language_off sprachwahl">Español</span></a>
    </form>
</li>
<li class="gbt">
    <form name="setLangEnglish" action="/i18n/setlang/" method="POST">{% csrf_token %}
        <input name="next" type="hidden" value="/" />
        <input type="hidden" name="language" value="en" />
        <a href="#" class="language_off" onclick="document.setLangEnglish.submit();return false;">
            <span class="language_off sprachwahl">English</span></a>
    </form>
</li>
<li class="gbt">
    <form name="setLangDeusch" action="/i18n/setlang/" method="POST">{% csrf_token %}
        <input name="next" type="hidden" value="/" />
        <input type="hidden" name="language" value="de" />
        <a href="#" class="language_off" onclick="document.setLangDeusch.submit();return false;">
            <span class="language_off sprachwahl">Deusch</span></a>
    </form>                
</li>


Fuente: oscarcp http://blog.oscarcp.com/?p=163