PDA

Ver la Versión Completa : Django para torpes


Julián
03-04-2011, 03:34:52
Para torpes como yo, aclaro. Vamos a ver que se puede hacer con esto

Estamos usando un Debian 64 Squeeze, que es el último, hemos comprobado que python debe estar instaldo, pues escribiendo el comando python en un bash shell sale el interprete, del cual lo único que sé es que para salir hay que escribir quit(), cosa de la que me enterado escribiendo help(). Gueno, ya sé mas que hace un rato. :D


El siguiente paso será instalar django que parece ser que es un framework bastante potente para hacer aplicaciones webs, motivo por el cual estamos escribiendo esto. A ver si es verdad que es mejor que el PHP y cambiamos de lenguaje.

Podemos ver que está disponible para su instalción con apt:

#sudo aptitude search django
p mumble-django - A Mumble-Server web interface
p python-django - High-level Python web development framework
p python-django-app-plugins - plugin system for django
p python-django-auth-ldap - Django LDAP authentication backend
p python-django-auth-openid - provides optional OpenID integration for Django
p python-django-contact-form - extensible contact-form application for Django
p python-django-countries - provides a country field for Django models
p python-django-dajax - easy to use ajax library for django
p python-django-dajaxice - agnostic and easy to use AJAX library for django
p python-django-debug-toolbar - Embedded debugging toolbar for Django projects
p python-django-djapian - Search API for Django using Xapian
p python-django-djblets - Re-usable components for Django projects
p python-django-dmigrations - Database migration tool for Django projects
p python-django-doc - High-level Python web development framework (documentation)
p python-django-extensions - Useful extensions for Django projects
p python-django-filebrowser - file management in the Django admin interface
p python-django-formfieldset - fieldset rendering mixin for Django-based forms
p python-django-genshi - Django integration for Genshi
p python-django-lint - Static analysis tool for Django projects and applications
p python-django-markupfield - custom Django field for easy use of markup in text fields
p python-django-mumble - A Mumble-Server config application for Django
p python-django-nose - Django test runner that uses python-nose
p python-django-picklefield - Pickled object field for Django
p python-django-piston - Django mini-framework creating RESTful APIs
p python-django-registration - A user-registration application for Django
p python-django-reversion - Provides comprehensive version control facilities for Django
p python-django-rosetta - Eases the translation process of your Django projects
p python-django-shorturls - A short URL handler for Django applications
p python-django-south - Intelligent schema migrations for django apps
p python-django-swordfish - Persistent key-value database with HTTP interface (Django integr
p python-django-tagging - A generic tagging application for Django projects
p python-django-threaded-multihost - allows to serve multiple sites from one django installation
p python-django-tinymce - replacement text widget for Django web framework
p python-django-treebeard - Efficient implementations of tree data structures for Django
p python-django-treebeard-doc - Efficient implementations of tree data structures for Django (do
v python2.4-django-genshi -
v python2.5-django-genshi

Así que escribimos "aptitude install python-django" y en unos segundos ya está puesto. Ahora,a ver como leches se usa esto :D :D

CONTINUARÁ ..

Julián
03-04-2011, 03:35:21
Comprobando la instalación. Lo que está en negrita es lo que escribimos nosotros.
#python
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print django.get_version()
1.2.3

Julián
03-04-2011, 03:35:35
Creamos una carpeta pyhton y dentro creamos un proyecto, y editamos el archivo settings.py en el cual ponemos el user y pass y dbname de una base de datos previamente creada, con mysql, aunque puede usarse cualquier otra.

#mkdir python
#cd python/
#django-admin startproject pruebas
#cd pruebas
#vi settings.py
#python manage.py syncdb

Aqui obtenemos un error:

File "/usr/lib/pymodules/python2.6/django/db/backends/mysql/base.py", line 14, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

A ver si es que necesitamos instalar el paquete python-mysql:
#sudo aptitude install python-mysqldb

Probamos de nuevo:
#python manage.py syncdb
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'nailuj'):
E-mail address: julian@clubdelphi.com
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Group_permissions model
Installing index for auth.User_user_permissions model
Installing index for auth.User_groups model
Installing index for auth.Message model
No fixtures found.

Ahora sí que vá. Y podemos ver el resultado lenzando el script en la shell:
#python manage.py runserver 0.0.0.0:8000
y abriendo la url en el navegador:
http://<mi_server>:8000

Julián
03-04-2011, 03:35:48
Reservado para el capitulo 4 (esperando... :D)

Julián
03-04-2011, 03:36:51
Reservado para el capitulo 5 (esperando... :D)

D-MO
03-04-2011, 07:00:12
Te me has adelantado :o...

Solo quiero aportar lo siguiente:

Python tiene un gestor de paquetes (herramienta de instalación depaquetes) propio, exclusivo para instalación de paquetes python que se mantiene mucho mas actualizado que el apt. Este gestor está integrado dentro de la suite setuptools (http://pypi.python.org/pypi/setuptools) que provee los medios mas prácticos de instalar paquetes python. El paquete que se encarga de la busqueda y descarga de otros paquetes para instalar es easy_install. Personalmente prefiero utilizar esta para todo lo relacionado con python y dejar apt para otros menesteres. En debian creo que no viene instalado por defecto el setuptools, para instalarlo basta con ejecutar

apt-get install python-setuptools


...y ya conocemos el resto de la historia.

Para instalar un paquete con easy_install lo hacemos de la siguiente manera (como superusuario):

easy_install django


Y si lo que queremos es que nos descargue y actualice a la última versión del paquete hacemos lo siguiente:


easy_install -U django

notar la "U" mayúscula.

Lo que me gusta de easy_install es que los paquetes son descargados desde la propia web del autor, así que estamos seguros que siempre estaremos instalando la versión estable según el autor.

Para mas info:

easy_install --help

o en su web (http://pypi.python.org/pypi/setuptools).

Por cierto, no se si te has dado cuenta, has escrito Dajngo en lugar de Django en el título :D.

Saludos.