Mostrando las entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Python. Mostrar todas las entradas

domingo, octubre 13, 2019

Hola Mundo en Django

Desde hace un tiempo me encuentro aprendiendo Django y Python, como siempre que arranco con algo lo primero que hago es el "Hola Mundo". Es el arranque de todo y como decía un amigo si te sale el "Hola Mundo" ya dominas el lenguaje ("Una broma interna").

Podríamos hacer un html simple y al ponerlo en la raíz del sitio lo podríamos acceder pero la idea es usar vistas por lo que vamos a describir como hacer un "Hola Mundo" rápidamente.

El primer paso para nuestro ejemplo es crear el proyecto "holamundo"

cgomez@cgomez-urulinux ~/djangocode $ django-admin.py startproject holamundo



Luego de crear el proyecto entramos a la carpeta holamundo que contiene los archivos:
cgomez@cgomez-urulinux ~/djangocode $ cd holamundo/holamundo

Vamos a crear nuestra vista dentro del archivo que contendrá las vistas, le podríamos poner cualquier nombre pero para seguir las convenciones vamos a llamarlo views.py


Simplemente creo una vista que recibe un request y devuelve un response que dice "Hola Mundo", es un ejemplo muy simple para crear nuestro "Hola Mundo". Para que esto se pueda realizar me falta enganchar mi vista al proyecto ya que por ahora esto no quiere decir nada. 

Debo configurar mi url y esto se hace desde el archivo urls.py, este archivo se crea por defecto cuando creamos un proyecto vacío en django. Dentro de este archivo se encuentra por defecto el acceso al admin por lo que para nuestro ejemplo lo vamos a comentar y configurar nuestra vista.



En la sección de urlpatterns es donde indico como se encuentra mi vista que mostrara "Hola Mundo", lo único que hice para esto fue usar una expresión regular como se muestra en la imagen.

Luego de guardar estos cambios, arranco el servidor y accedo a mi ejemplo:
Este es un ejemplo simple de mi primer "Hola Mundo"












domingo, septiembre 22, 2019

Django for dummies y algo de Python

Para no perder la costumbre este año me puse como objetivo dominar Python  y Django, hice el curso de Microsoft que se encuentra en línea aparte de otro presencial en BIOS. El problema que tengo es que me esta costando agarrar práctica y en ocasiones me complico con cosas muy simples, por este motivo voy a ir poniendo todo lo que me ha complicado en el arranque con Django. La idea es que si recién arrancas no te tranques en las cosas simples que me he trancado.

¿Como detectar la versión de django?

Es algo muy sencillo pero en mi caso me estuve complicando hasta que encontré la forma mas sencilla, abrí una terminal ejecute python hice el import de django y luego django.VERSION. Al ejecutar esto me da el siguiente resultado:

cgomez@cgomez-urulinux ~ $ python
Python 2.7.12 (default, Aug 22 2019, 16:36:40)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 11, 23, u'final', 0)
>>> 

En mi caso tengo Python 2.7 y 3.5 por lo que probé y funciona de la misma manera. Es algo sencillo pero que me llevo navegar un poco en internet para darme cuenta de esto.

cgomez@cgomez-urulinux ~ $ python3
Python 3.5.2 (default, Jul 10 2019, 11:58:48)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(2, 2, 0, 'final', 0)
>>>
Al hacer la consulta con Python 3 me da que tengo otra versión de Django, esto por que lo tengo así configurado y uso la versión que necesito según lo que quiera hacer.

¿Por qué ejecutar el manage.py migrate?
Ten en cuenta que no soy experto en esto pero en resumen cuando comienzas un nuevo proyecto se debe ejecutar el comando manage.py migrate para que se cree la base por defecto con las estructuras necesarias para django. Esto no es obligatorio pero si usas por ejemplo SQLite como base de datos al ejecutar el comando se crean las tablas necesarias para las aplicaciones definidas en INSTALLED_APPS, esto lo puedes ver en el archivo settings.py. Con SQLite lo hace con la primera ejecución si no me equivoco pero en mi caso lo hago para no olvidarme. Aquí un ejemplo de ejecutar este comando:
cgomez@cgomez-urulinux ~/djangocode/misitio $ python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
cgomez@cgomez-urulinux ~/djangocode/misitio $ ls -l
total 48
-rw-r--r-- 1 cgomez cgomez 40960 sep 22 20:23 db.sqlite3
-rwxrwxr-x 1 cgomez cgomez 627 sep 22 20:10 manage.py
drwxrwxr-x 3 cgomez cgomez 4096 sep 22 20:14 misitio
cgomez@cgomez-urulinux ~/djangocode/misitio $
En el ejemplo se crea la bae db.sqlite3 ya que es la base que viene por defecto en la configuración y al ejecutar el migrate se crea con las estructuras necesarias para las aplicaciones que vienen por defecto.

¿Servidor de Desarrollo?
Para que no te tengas que complicar con Apache ni nada por el estilo django cuenta con un servidor de desarrollo que es sencillo y lo puedes ejecutar solo con una línea.

cgomez@cgomez-urulinux ~/djangocode/misitio $ python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
September 22, 2019 - 23:39:41
Django version 2.2, using settings 'misitio.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Con runserver se ejecuta un servidor liviano para desarrollo que escucha en el puerto 8000 por defecto por lo que puedes ejecutar esto en tu equipo y luego entrar al browser de la siguiente manera:



Si necesitas cambiar el puerto en el que escucha el servidor de desarrollo se lo puedes pasar como parámetro al ejecutarlo, también puedes hacer que escuche en la ip pública del equipo para compartir esta ejecución con otro desarrollador.

cgomez@cgomez-urulinux ~/djangocode/misitio $ python3 manage.py runserver 8081
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
September 22, 2019 - 23:47:20
Django version 2.2, using settings 'misitio.settings'
Starting development server at http://127.0.0.1:8081/
Quit the server with CONTROL-C.

En el ejemplo mi servidor de desarrollo escucha en el puerto 8081, también puedo hacer lo siguiente:

cgomez@cgomez-urulinux ~/djangocode/misitio $ python3 manage.py runserver 192.168.1.6:8081
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
September 22, 2019 - 23:49:54
Django version 2.2, using settings 'misitio.settings'
Starting development server at http://192.168.1.6:8081/
Quit the server with CONTROL-C.

En este ejemplo queda accesible mi servidor para que desde otro equipo lo puedan acceder, siempre y cuando tengan acceso al ip 192.168.1.6 en el puerto 8081. Estoy descartando temas de firewall y seguridad ya que el ejemplo es solo ilustrativo.