Comenzamos la configuración de un proyecto Coffee Shop en Django
¿Cómo crear y activar el entorno virtual?
Para iniciar, nos posicionamos en la carpeta deseada en nuestro editor. Creamos el entorno virtual con:
python -m venv <ruta_donde_guardar>/Coffee_Shop
Activamos el entorno con:
source Coffee_Shop/bin/activate
Verificamos su activación y procedemos a instalar Django:
pip install django
¿Cómo iniciar un proyecto Django?
Creamos el proyecto utilizando el comando:
django-admin startproject Coffee_Shop
Listamos las carpetas para confirmar la creación del proyecto. Abrimos el proyecto en Visual Studio Code:
code -r Coffee_Shop
Ahora tenemos el archivo manage.py y las configuraciones listas en nuestro editor.
¿Qué extensiones instalar en Visual Studio Code?
Aprovechamos las alertas de Visual Studio Code para instalar extensiones esenciales como:
Python
PyLance
Python Debugger
Black (formateo de código)
Django (para visualizar templates)
¿Cómo configurar el control de versiones con Git?
Inicializamos un repositorio Git:
git init
Añadimos y comiteamos los archivos iniciales creados por Django:
gitadd.git commit -m "Initial setup"
¿Cómo crear y utilizar un archivo .gitignore?
Para evitar subir archivos innecesarios al repositorio, generamos un archivo .gitignore con gitignore.io especificando "Django" como criterio. Pegamos el contenido generado en un nuevo archivo .gitignore y lo comiteamos:
gitadd .gitignore
git commit -m "Add .gitignore"
¿Cómo manejar las dependencias del proyecto?
Creamos dos archivos para gestionar las dependencias:
requirements.txt: para dependencias de producción.
requirements-dev.txt: para dependencias de desarrollo como iPython.
Agregamos las dependencias instaladas en nuestro entorno actual:
¿Cómo continuar con la configuración del proyecto?
Con el entorno preparado, es importante crear un archivo base HTML que sirva como plantilla. Te reto a crear base.html con un menú y un pie de página para usar en el curso de Django.
Configuración de Proyecto Django: Entorno, Extensiones y Repositorio
Configuración de Proyecto Django: Entorno, Extensiones y Repositorio
Para los jefes que usamos linux:
python3 -m venv nombre_del_entorno
activar el entorno:
source nombre_del_entorno/bin/activate
y finalmente cuando ya no lo necesites:
deactivate
Igualmente dependiendo de tu configuración de linux puede que el comando sea python3 o python es cuestión de que lo pruebes.
.
Y como extra no olvides revisar que ciertamente estás trabajando en el entorno virtual en tu editor de código!
Para crear el requirements.txt tambien se puede usar pip freeze > requirements.txt en la terminal, puedes correr el comando cada vez que agregues una nueva dependencia, esto simplemento sobreescribira el anterior y agregara lo nuevo
Un tip muy útil. Sin embargo esta acción tiene el problema que guardará en el archivo requirements.txt, no solamente los paquetes que se deben instalar, sino también sus dependencias. Esto puede generar conflictos futuros. Creo que por este motivo se recomienda agregar al requirements.txt solamente los paquetes sin sus dependencias!
Ivan, si ya se han hecho los tests y todo esta ok, lo mas facil es generar el requirements con el pip freeze como comenta Alver, si hay conflictos de dependencias no va a correr tu codigo
¡Hola! Depende de como estés acostumbrado a manejarlo, puedes hacerlo a tu gusto, yo por lo personal usaba el mismo venv en múltiples proyectos, entonces lo dejé en la carpeta ~/.venvs/my_env, si vas a tener dependencias distintas y múltiples proyectos quizás sea mejor en la carpeta del proyecto añadiendo en el .gitignore el nombre del entorno virtual.
Poetry provides a more comprehensive and integrated solution for managing dependencies, virtual environments, and project configuration. It simplifies many aspects of Python project management, making it a preferred choice for many developers. However, venv is still a valuable tool for creating isolated environments, especially for simpler projects or when you prefer more manual control
Sería interesante añadir algo de información sobre otras maneras de manejar las dependencias -> por ejemplo: Pipfile + Pipfile.lock (instalando Pipenv)
Al momento de ejecutar python -m django startproject coffee_shop me dice que no puedo utilizar el nombre y no se si veo mal pero alli si lo acepta de esa manera. ¿Que debo hacer?
Despues de instalar ipython me salieron muchas mas librerias al usar pip freeze jajaja, ya veo porque el profesor solo tomo la version que salia en la terminal. y no uso pip freeze para copiarlo desde ahi
me sale esto , estoy windows : ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
En windows cuando creo el ambiente virtual veo que se crea un carpeta envs, pero no veo que la terminal del profesor suceda lo mismo, esos estaria bien ?|
# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
# in your Git repository. Update and uncomment the following line accordingly.
# <django-project-name>/staticfiles/
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
# Django stuff:
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
#
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
#
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/