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:

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