Skip to content

Inicio Rápido

salealazar edited this page Apr 17, 2023 · 1 revision

¿Cómo empezar sus proyectos?

Instrucciones básicas para empezar sus proyectos, recopilando lo aprendido en las auxiliares y respondiendo preguntas frecuentes.

No es necesario leer todo el documento. La idea es que les sirva como guía por si se pierden.

💡 Si ya saben lo que están haciendo, pueden ver la versión corta.

1. Repositorio Git

1.1. Aceptar la invitación

Lo primero que deben hacer será unirse al equipo que preparamos para ustedes en la organización de Github de este ramo. La invitación les debería haber llegado por correo, usando los usuarios que indicaron en el formulario que respondieron a inicio de semestre. Si no tienen la invitación o se equivocaron de usuario, consulten con sus auxiliares.

En esta organización se encuentran los repositorios de cada grupo, sobre los que deberán trabajar y subir sus proyectos para que el equipo docente tenga acceso. Es un poco enredado, pero la estructura básicamente es que la Organization "DCC-CC4401" tiene Teams (e.g. "2022-1 Grupo 1") y cada Team tiene asignado su Repository (e.g. "DCC-CC4401/2022-1-Grupo-1").


1.2. Clonar el repositorio en local

Una vez aceptada la invitación, busquen su repositorio dentro de la organización y verán algo como esto:

image

Acá nos indican varias formas de inicializar el repo en nuestros computadores locales. La más sencilla es como lo hicimos en el auxiliar 1. Copien la URL que aparece en Quick Setup y luego en su consola local, dentro de la carpeta en que quieran tener el proyecto, escriban:

git clone https://github.com/...

Reemplazando por la URL que copiaron.

También, por su cuenta, pueden clonar usando la interfaz del editor con el que estén trabajando o de otras interfaces gráficas de git (Github Desktop, GitKraken, etc), pero no las cubriremos en este tutorial.

Nota: Si su repositorio ya tiene contenido, no verán lo mismo de la imagen anterior. En su lugar, pueden obtener la URL para clonar en el siguiente menú:

image

Una vez clonado el repositorio, debería crearles una carpeta vacía en su computador (con una carpeta ".git" oculta). Esta carpeta ahora está conectada con el repositorio de Github.


1.3. Probar el repositorio

Para probar que el repositorio local está conectado con el de Github, pueden crear dentro de la carpeta un archivo de texto de nombre "README.md" con algún contenido cualquiera y pushearlo al servidor como aprendimos. Si no lo recuerdan, en resumen es:

git add README.md
git commit -m "First commit, add README"
git push

Recuerden que si más de una persona intenta hacer push, no les va a dejar, porque tienen que hacer pull de todos los cambios actualizados antes de poder pushear. Si no tienen claro esto aún, intenten revisar los videos y la actividad de la Auxiliar 1 otra vez.

Si todo salió bien, debería aparecer su README en el repositorio de Github, y automáticamente muestra su contenido en la descripción del repo.

image


2. Ambiente virtual

2.1. ¿Qué es un ambiente virtual?

En la Auxiliar 2 aprendimos que un proyecto de Python puede tener muchas librerías, o distintos proyectos podrían requerir diferentes versiones de Python por temas de compatibilidad. Para evitar que nuestra instalación global de Python quede llena de librerías que no todos los proyectos usan y que podrían tener conflictos entre sí, existen los ambientes virtuales.

Un ambiente virtual es básicamente una carpeta donde se encuentra auto-contenido todo lo necesario para un proyecto de Python, incluyendo Python mismo y pip, el instalador de paquetes y librerías. De esta forma, se encapsulan los requerimientos de cada proyecto y no interfieren con otros ni con la instalación global de Python en el computador. Literalmente, el ambiente no es más que una carpeta dentro del computador. Si se borra, el ambiente deja de existir.


2.2. Crear el ambiente virtual

Existen varios módulos de Python para manejar ambientes virtuales (venv, virtualenv, pipenv, etc). En este caso usaremos venv.

Para crear el ambiente, navega por consola hasta la carpeta en que quieras crearlo y escribe:

python -m venv myvenv

el parámetro -m venv es para indicar que estamos usando el módulo venv, y myvenv es el nombre que le daremos al ambiente. Pueden escoger otro nombre si quieren, y dado que esto es local, no es necesario que sea el mismo que el del resto del equipo.

¿Dónde crear el ambiente? Una opción es tener una carpeta en cualquier parte de tu computador con todos los ambientes virtuales que crees para tus proyectos, nombrados adecuadamente para evitar conflictos. Otra opción es crearlo dentro de la misma carpeta raíz del proyecto. Si haces esto último, considera que Git lo tomará como parte del proyecto y podría subirse al repositorio. Más adelante hablaremos sobre cómo y por qué hay que evitar subir el ambiente al repo.

No uses nombres ni rutas con acentos o caracteres especiales.


2.3. Activar el ambiente virtual

Una vez creado, debemos activarlo. Esto significa decirle a la consola que, al usar e instalar paquetes de Python, debe priorizar nuestro ambiente virtual en su PATH (i.e. las ubicaciones donde buscará los comandos que usamos). IMPORTANTE: Deben activar el ambiente cada vez que vuelvan a abrir la consola.

La forma de activarlo cambia según tu sistema operativo y/o consola.

Windows:

myvenv\Scripts\activate

Linux:

source myvenv\bin\activate

Ambos son considerando que estás en la carpeta en que lo instalaste.

Puede que tu SO o consola funcionen distinto. Si no te resulta, consulta este tutorial de djangogirls en la sección "Trabajar con virtualenv", donde hay más alternativas.

Una vez activado, en la ruta que indica tu consola se debería agregar el nombre del ambiente entre paréntesis. Por ejemplo:

(myenv) C:\Documentos\Ingenieria1\Inicio-Proyectos>

Igual que con git, algunos IDE o editores tienen su propia interfaz para manejar ambientes. Tampoco cubriremos eso en este tutorial.


2.4. Instalar Django en el ambiente

Teniendo activado el ambiente, podemos usar el pip que viene incluído en él para instalar los paquetes que necesitemos, en particular Django. Para esto, usamos el siguiente comando (Háganlo solo si el ambiente está activado, fíjense que salga su nombre entre paréntesis en la ruta):

Actualizamos pip:

pip install --upgrade pip
pip install django==4.2

ATENCIÓN: A fines de 2021 salió Django 4.0, es por eso que el material del curso todavía está en la versión 3. Sin embargo, esto no debería afectar en el desarrollo de sus proyectos ni la utilidad del material de las clases auxiliares.

Con eso su ambiente ya debiera tener Django y sus dependencias, y podrían empezar a usarlo en su proyecto.


2.5. requirements.txt

Como mencionamos en algún momento, no es buena idea compartir su ambiente dentro del repositorio, ya que cada computador podría tener compatibilidades distintas según su sistema operativo.

En su lugar, la forma correcta de procurar que todo el equipo tenga las mismas librerías y sus versiones, es con el archivo requirements.txt. Este archivo tendrá un registro de todos los paquetes y versiones del proyecto, para que luego cada uno pueda instalarlos adecuadamente en su sistema.

Para crear un archivo de requirements, usamos el siguiente comando en la carpeta raíz de nuestro proyecto:

pip freeze > requirements.txt

Esto creará un archivo con los paquetes instalados, que debería verse más o menos así:

[Archivo de ejemplo, el suyo podría ser distinto. ¡No copiar!]
asgiref==3.6.0
Django==4.2
sqlparse==0.4.3

Este archivo SÍ pueden (y deben) subirlo al repositorio.

Luego, cuando alguien descargue el proyecto, y ya tenga ACTIVADO su ambiente virtual, en lugar de instalar Django u otras librerías a mano, debe hacer:

pip install -r requirements.txt

Esto instalará de una vez todo lo que esté declarado en el archivo, con las versiones adecuadas.

Noten que requirements.txt es solo un archivo de texto. Pueden editarlo manualmente para cambiar el stack de librerías de su proyecto.


3. Proyecto de Django

3.1. Crear el proyecto

Teniendo nuestro repositorio enlazado y nuestro ambiente virtual activado, podemos crear nuestro proyecto.

OJO: Basta con que UNA persona inicialice el proyecto de Django. Luego lo pushea al repo y los demás hacen pull de eso para tenerlo en su computador.

Para empezar, [con el ambiente activado], usamos el siguiente comando:

django-admin startproject [nombre_del_proyecto]

El nombre debe usar solo minúsculas y guión bajo _.

Esto creará la siguiente estructura en su sistema:

[Nombre-Del-Repositorio]
|── [nombre_del_proyecto]
|   |── __init__.py
|   |── asgi.py
|   |── settings.py
|   |── urls.py
|   |── wsgi.py
|── manage.py

3.2. Crear una "app"

Recordemos que dentro de un proyecto de Django podemos tener distintas apps. Una app, a diferencia de lo que el nombre sugiere, no es necesariamente una aplicación completa, sino solamente una forma de modularizar distintas secciones de su proyecto.

Podrían tener todo su proyecto en una sola app, o separarlo en distintos módulos para mejorar la organización de su código. Por ejemplo, si su proyecto fuera U-Cursos, podrían tener una app para usuarios, otra para cursos, otra para foro, o una para horario. La división puede ser en términos de funcionalidad, de datos, de ubicación en el sitio web, de equipo de trabajo, o de cualquier criterio que ustedes estimen conveniente para organizar. Consideren las apps más como módulos que como aplicaciones.

Dicho esto, deberán crear al menos una app, de la siguiente forma:

cd [nombre_del_proyecto]    <--- Entrar a la carpeta del proyecto
python manage.py startapp [nombre_de_app]

Y su estructura quedará así:

[Nombre-Del-Repositorio]
|── [nombre_del_proyecto]
|   |── ...
|── [nombre_de_app]
|   |── __init__.py
|   |── admin.py
|   |── apps.py
|   |── models.py
|   |── tests.py
|   |── views.py
|── manage.py

Una vez creada la app, deberán registrarla como parte del proyecto buscando y agregando lo siguiente en settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '[nombre_de_app]',   # <--- Esto es lo que deben agregar
]

3.3. Correr el proyecto

Antes de echar a andar el proyecto es necesario aplicar la primera capa de migraciones. Para esto hacemos lo siguiente:

python manage.py makemigrations
python manage.py migrate

Más info sobre migraciones [Conceptos de Django|Django - Conceptos#Modelos y migraciones].

Al hacer eso deberían aplicarse varias migraciones, con un OK al final de cada una.

Luego, para correr el servidor deben hacer:

python manage.py runserver

Si todo salió bien, deberías ver el mensaje:

Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Y si ingresas a http://127.0.0.1:8000/ (equivalente a http://localhost:8000/), deberías ver el mensaje de bienvenida de Django.

image


3.4. Admin de Django

Django viene con una interfaz de administración que permite gestionar la base de datos visualmente. Para saber más revisa Admin de Django.

Para usar el admin, debes registrar los modelos que quieres que aparezcan en ella. Para esto deben editar el archivo admin.py de cada app, y agregar los models que quieran gestionar en el admin.

from django.contrib import admin
from [nombre_de_app].models import [NombreModelo]

# Register your models here.
admin.site.register([NombreModelo])

Para poder ingresar al admin es necesario tener un usuario con permisos de admin. Dado que no tenemos interfaz para crear usuarios, lo hacemos por consola:

python manage.py createsuperuser

Más info en la página de Usuarios

Con este usuario podrán ingresar al admin. Desde ahí pueden crear otros usuarios no-admin para testear su página.


Esperamos que este documento les sirva como guía para sus proyectos. Cualquier otra duda, problema o sugerencia respecto a la guía, háganselo saber a sus auxiliares.

¡Éxito! :D