Larga vida al Rey Michael Jackson
La humanidad ha perdido alguien que ha sido y sera inspiracion para muchos artistas.
La humanidad ha perdido alguien que ha sido y sera inspiracion para muchos artistas.
Una breve introduccion a Django, un Framework para desarrollo utilizando Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # models.py (tablas en nuestra base de datos) from django.db import models class Book(models.Model): name = models.CharField(max_length=50) pub_date = models.DateField() # views.py (logica de negocio) from django.shortcuts import render_to_response from models import Book def latest_books(request): book_list = Book.objects.order_by('-pub_date')[:10] return render_to_response('latest_books.html', {'book_list': book_list}) # urls.py (configuracion URL) from django.conf.urls.defaults import * import views urlpatterns = patterns('', (r'^latest/$', views.latest_books), ) # latest_books.html (template html) <html><head><title>Books</title></head> <body> <h1>Books</h1> <ul> {% for book in book_list %} <li>{{ book.name }}</li> {% endfor %} </ul> </body></html> |
models.py el archivo que contiene la descripcion de las tablas que existen en nuestra base de datos, representadas por una clase Python. La clase es llamada model. Usando esta clase, podemos hacer nuestras consultas a la base datos, ya sean Create, Update, Delete, notese que no se utilizan sentencias SQL, y es un poco mas sencillo usando Python.
views.py es el archivo que contiene la logica de negocio. La funcion latest_books() es un “view” o vista para los que usan CodeIgniter (pero no tiene el mismo uso OJO).
urls.py es el archivo que especifica que template sera llamado cuando se solicite un URL especifico.
latest_books.html es el archivo HTML, nuestro template, donde mostraremos la data.
En este inicio de probar algo diferente a PHP (no por nada malo, solo por curiosidad, la diversidad es buena), he empezado con Python, y que mejor forma de aprender un lenguaje que utilizando un Framework, asi que he decidido probar Django.
Y claro, tengo que documentar de una forma u otra esos pequeños problemas que aparentan grandes cuando nos involucramos en algo nuevo, esta vez mi primer error ha sido el siguiente:
1 | "IndentationError: unexpected indent" |
Veo que si de delicado tiene todo, aqui el por que del problema:
1 2 3 4 | from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() |
El problema esta en esta linea from django.contrib import admin, y es que tenia un tab hacia dentro y eso generaba ese error, y debia estar al mismo nivel de la primera linea.
Dando una vuelta por adaba.org me encontre con este requerimiento, buscando un empleado me he encontrado con esto tan peculiar, si, el empleador es “cristiano”, y necesita un empleado “cristiano”, pero yo me pregunto, ¿es esta la manera de ser “cristiano”?, ¿es esta la forma de mostrar caridad?, ¿donde esta el amor al projimo en este anuncio?, ¿donde esta la decision de querer atraer a los “no cristianos” hacia “cristo”?, ¿Cristo no aceptaba a todo el mundo?, que no me jodan a mi, que si este es cristiano yo soy Abraham.
Ser cristiano y predicar lo que Cristo predico es otra cosa:
Yo me imagino que si el empleado final no sabe ni un carajo de lo que se le pide, como es cristiano se va quedar trabajando, bueno y asi quieren que nosotros los pecadores nos metamos a “cristianos”, pendejos!.
Muchos de nosotros ya usamos Google Chrome, el lindo navegador de Google, dicho navegador tiene unas cuantas caracteristicas interesantes, las cuales no vienen a relucir en este post el dia de hoy, pero dentro de todas ellas hay una especial: Descarga de archivos.exe, Chrome al momento de descargar un archivo .exe nos pregunta si en verdad queremos descargarlo, y ahi le damos como siempre a YES (si ese YES que nadie lee exactamente que significa, pero siempre hay que darle a YES).
Pero que pasa si yo no le doy a YES o si no le doy a NO?…. nada… el archivo se descarga igualito…osea si usted estaba bajando un virazo, y penso que Chrome era tan buen navegador que no iba a dejar que ese ejecutable se guardara en su disco sin antes usted confirmarlo, pues usted simplemente se jodio, google chrome descarga el archivo sin usted darle a YES.
Si no sabes lo que es ORM (Object Relational Mapper) , investiga porque aquí no te lo vamos a explicar =), o por lo menos no en este post.
Unos de los ORM que tiene muy buen camino para php es Doctrine, aquí esta el site para que puedan verlo.
http://www.doctrine-project.org/
Próximos post! Que es ORM e implementación de Doctrine con Codeigniter.
En estas semanas pasadas tuve la oportunidad de ver codigo de otros programadores (si o no Zer0s y Wilbur? :d ), bueno ahi puedimos notar la forma en que ellos llenaban un select (dropdown), de una forma un poco extraña, auque en php es valido, pero no si utilizamos CodeIgniter, ya que CodeIgniter nos facilita operaciones como esas.
La forma “correcta” de llenar un select (dropdown) deberia ser la siguiente:
Model:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | class dropdown extends Model{ const TABLA_REGISTROS = 'tabla_x'; //constructor fucntion dropdown(){ parent::Model(); } function llenar_select(){ $query = $this->db->get(self::TABLA_REGISTROS); $data = array(); $data[]='Seleccion un elemento'; //aqui agregamos una opcion sin valor a nuestro select, la cual sera la seleccion por defecto if($query->num_rows()>0){ foreach($query->result_array() as $row){ $data[$row['id']]= $row['nombre']; } return $data; } } } |
Nuestro modelo esta listo, no queremos mas nada, con este método llenamos el select.
Controlador
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class llenarSelect extends Controller{ function llenarSelect(){ parent::Controller(); } function index(){ $data['titulo'] = 'Llenando un Select o DropDown'; $data['registros'] = $this->dropdown->llenar_select(); $this->load->view('view-select',$data); } } |
Nuestro Controlador esta completo.
Vista
La cual es un html cualquiera solo que llamando una funcion de CodeIgniter
1 2 3 4 5 6 7 8 | echo form_open('ruta-procesa')."\n"; echo form_label('Mostrando Select ')."\n"; // y aqui la magia de CI echo form_dropdown('registros',$registros)."\n"; echo form_close(); |
Y creo que eso es todo….
CodeIgniter tiene un Helper muy interesante, y es el Helper Array, con el cual podemos buscar un elemento dentro de un Array y devolverlo…y de una forma muy sencilla :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //llamamos el helper $this->load->helper('array'); //elemento a buscar $pais = "DO"; //Array de elementos $paises = array('Do'=>'Rep. Dom','Usa'=>'United..','PR'=>'Puerto Rico'); //finalmente buscamos y devolvemos echo element($pais, $paises); // esto debe devolver Rep. Dom |
La gran mayoría de nosotros configuramos nuestro Local Web Server de la forma normalita, la cual es: http://localhost, pero que tal si configuramos nuestro local web server identico a nuestro remote web server?.
- Local Web Server - > http://localhost/website
- Remote Web Server - > http://website.com
- Nuevo local Web Server -> http://website
Como yo trabajo bajo Window’s XP (aunque hora ando pinchando W7), daré los pasos para XP.
¿Dónde crear los nuevos DNS para nuestros site locales?
Windows XP tiene un archivo llamado HOST, el cual se encuentra en la siguiente ruta: c:/windows/system/drivers/etc/hosts, este archivo “hosts” no tiene extension, por lo cual, debes abrirlo con notepad, o mucho mejor, yo siempre lo abro con Dreamweaver o NotePad++ hago los cambios y solo le doy a salvar y listo, asi evito que se le agregue una extension.
El siguiente paso es tan facil como este: 192.168.0.80 (o cualquier ip local que inicie con 192. o 127 ) :
192.168.0.80 website (nótese el espacio entre el 80 y el website , el ip o (192.168.0.80 es la ip donde apuntara el DNS website , el cual es el nombre que utilizaremos en el navegador, en forma http://website)
Ahora nuestro siguiente paso es crear el VirtualHost en el config del Apache.
Yo no sé donde usted tiene o que apache utiliza, pero si es un apache instalado independiente (que no viene en ningun paquete como WAMP, etc), es de suponer que el config se encuentra la siguiente ruta: C:/Program Files/Apache Sotware Foundation/Apache2.x/conf/httpd.conf (claro esto es windows).
Ok, ya tenemos abierto el “httpd.conf”, nuestro siguente paso es crear el Virtual Host apuntando al puerto 80, solo tenemos que escribir lo siguiente (yo diria que al final del config)
<VirtualHost *:80> Servername website DocumentRoot "C:/ruta/hacia/su/www/site" <Directory "C:/ruta/hacia/su/www/site"> AllowOverride All Options All </Directory> php_value register_globals off php_value magic_quotes_gpc off </VirtualHost>
Reiniciamos el Apache y escribimos en nuestro navegador la url hacia http://website
Creo que es todo…. las configuraciones del php son opcionales (php_value….)
Saludos
Recent Comments