lunes, 14 de abril de 2008

Cómo usar links en herramienta Admin de Django

Es muy fácil y yo me quebré la cabeza un buen rato cambiando las plantillas y revisando el código de Django.
Si uno necesita poner links en en la herramienta Administración de Django, no funciona así no más pues si uno hace algo como esto:
  def get_link(self):
link = self.sample_url
if link:
return '<a href="http://www.serversample.cl/">click here</a>'
return ''
class Admin:
list_display = (...,'get_model_link')

Django Admin escapa los textos, así que el resultado en el browser es esto:

<a href="http://www.serversample.cl/">click here</a>

Para que Django Admin no escape los textos hay que hacer lo siguiente:
  def get_link(self):
link = self.sample_url
if link:
return '<a href="http://www.serversample.cl/">click here</a>'
return ''
get_link.allow_tags = True

Y agregar el campo al list_display en la clase Admin:
  class Admin:
list_display = (...,'get_model_link')

Con esto no sólo se pueden crear links, sino que se puede agregar cualquier tag que se necesite (scripts, color de texto, formato texto, divs ... etc...)

miércoles, 9 de abril de 2008

Redirect desde Apache

Yo no lo sabía... ¿seré muy nerd?

Ocurre que se puede hacer un redirect directamente desde apache sin necesidad de pasar por alguna página que tenga un header o algún invento similar.
Lo que hay que hacer es editar el archivo de confiuguración de apache (en la instalación por defecto en Linux está en /etc/http/conf/httpd.conf) y agregar la siguiente línea:

Redirect /index.html http://ww.sampleserver.com/application

Y no hagas esto:
Redirect /index.html http://ww.sampleserver.com/application
Porque termina en un loop infinito, que intenta cargar una pagina algo así como: http://ww.sampleserver.com/application/application/application/application/application/application/application/application ......