Entorno virtual
Comando para poder crear un entorno virtual usando conda:
conda create -n django-password-generator python=3
Comando para activar el entorno virtual de conda:
conda activate django-password-generator
instalar Django:
pip install django
si tipeas lo siguiente podras ver los multiples comandos que puedes usar con este paquete:
django-admin
Comando para crear un nuevo proyecto de Django:
django-admin startproject django_password_generator
Comando para ejecutar el servidor de desarrollo:
python manage.py runserver
Una vez el servidor se este ejecutando, podras visitar las siguientes URLs:
- http://127.0.0.1:8000/
- localhost:8000
Estructura del proyecto
Una breve descripción de la estructura del proyecto
- manage.py
- settings.py
- BASE_DIR, es la ruta de tu proyecto, esta es relativa a donde lo has creado
- SECRET_KEY, es un string unico para modulos que requieran de un string para mantenerse seguro
- DEBUG = True, este una variable que nos da mas informacion de los errores. en produccion debe estar en False.
- ALLOWED_HOST, son las urls que tiene permitidas conectarse a tu aplicacion
- DATABASES cambia el DEBUG = False, y visita un rl que no existe como: http:/localhost:8000/asdad esta no te mostrara los errores
- urls.py
tambien necesitas añadir ALLOWED_HOST=['localhost']
Django Apps
Para crear una app en django:
python manage.py startapp generator
luego es necesario agregarlo en Settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'generator'
]
urls
ve /admin
cambialo a otro nombre como /dashboard y ahora tienes que visitar /dashboard para entrar en el login
actualizalo ahora a lo siguiente:
from django.urls import path from generator import views
urlpatterns = [ path('', views.home), path('about', views.about), ]
lueggo en generator/views:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def home(request):
return HttpResponse('Hello world')
def about(request):
return HttpResponse('<h1>About</h1>')
Templates
permite leer archivos y ser convertidos en HTML para ser devueltos al cliente
crea en generator/templates/home.html
Home pagge
luego reemplazalo en generator/views.py:
def home(request): return render(request, 'generator/home.html')
pasar datos
tambien puedes pasar informacion:
en generator/views.py
def home(request):
return render(request, 'generator/home.html', {'name': 'Fazt'})
luego en *generator/templates/home.html*
Hello {{name}}
Password URL
cambiemos home:
<h1>Password Generator</h1>
<form action="generate-password">
<!-- Password Lenght -->
<select name="length" id="length">
<option value="6">6 Characters</option>
<option value="7">7 Characters</option>
<option value="8">8 Characters</option>
</select>
<button>Generate Password</button>
</form>
luego,
from django.urls import path
from generator import views
urlpatterns = [
path('', views.home),
path('generate-password', views.generatedPassword),
]
en generator/templates/password:
y en views:
def generatedPassword(request): return render(request, 'generator/password.html')
ahora en caso en el formulario quieras mantener el mismo nombre de la url, puedes colaor esto:
y luego en urls:
urlpatterns = [ path('', views.home), path('generate-password', views.generatedPassword, name='password'), ]
esto lo que hace es unir la vista y la url pasandole el nombre, name no tiene que ser distinto, puede ser el mismo que el nombre del path, solo lo he colocado asi para notarlo.
Más Recursos
- Añadir Bootstrap, https://getbootstrap.com/docs/5.1/getting-started/introduction/