¿Cómo construir un acortador de URL con Django?

Crear un acortador de URL es uno de los mejores proyectos para principiantes para perfeccionar sus habilidades. En este artículo, hemos compartido los pasos para construir un acortador de URL utilizando Django Framework. Para saber más sobre Django visita – Django Tutorial

Configuración

Necesitamos configurar algunas cosas antes de comenzar con nuestro proyecto. Usaremos el entorno virtual para nuestro proyecto.

pip install virtualenv
virtualenv urlShort
source urlShort/bin/activate

El comando anterior creará, activará un entorno virtual llamado urlShort .

Instalación de paquetes importantes

Necesitamos instalar algunos paquetes de antemano,

pip install django

Comenzando con nuestro proyecto

En primer lugar, necesitamos crear nuestro proyecto mediante,

django-admin startproject urlShort
cd urlShort

Sobre el comando, crea un proyecto Django y luego cd en ese directorio. Después de eso, también necesitamos crear una aplicación dentro de nuestro proyecto. La aplicación es una especie de contenedor, donde almacenaremos nuestro código. Un proyecto puede tener varias aplicaciones y pueden estar interconectadas

python manage.py startapp url

El comando anterior crea una aplicación llamada URL en nuestro proyecto. Nuestra estructura de archivos ahora será:

urlShort
├── manage.py
├── url
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── urlShort
 ├── asgi.py
 ├── __init__.py
 ├── __pycache__
 │ ├── __init__.cpython-37.pyc
 │ └── settings.cpython-37.pyc
 ├── settings.py
 ├── urls.py
 └── wsgi.py

Comprobando si todo está bien…

Puede verificar si todo funciona simplemente escribiendo esto en la línea de comandos. Pero cd en la carpeta principal, aquí urlShort.

python manage.py runserver

runerver ejecutará un servidor local donde se cargará nuestro sitio web. Mover a URL

https://localhost:8000

Mantenga abierta la ventana de su consola.

¿Cómo construir un proyecto de acortador de URL?

Apriétense los cinturones de seguridad ya que estamos empezando a codificar. En primer lugar, jugaremos con views.py . views.py se usa básicamente para conectar nuestra base de datos, api con nuestro Frontend. Abra views.py y escriba

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello World")

Guárdelo y abra localhost y verifique si cambia. No cambia porque no lo hemos mapeado en ninguna ruta. Básicamente, si escribe alguna función dentro de views.py , no funciona, pero necesitamos mapearla dentro de urls.p y. Entonces, crea un urls.py dentro de la carpeta url .

from django.urls import path
from . import views
app_name = "url"
urlpatterns = [
    path("", views.index, name="home")
]

No olvide agregar su aplicación: « url « en INSTALLED_APPS en settings.py

Creando modelos Django –

En primer lugar, necesitamos una base de datos para almacenar nuestras URL acortadas. Para eso, necesitamos crear un esquema para nuestra tabla de base de datos en models.py.

modelos.py

from django.db import models
class UrlData(models.Model):
    url = models.CharField(max_length=200)
    slug = models.CharField(max_length=15)
def __str__(self):
        return f"Short Url for: {self.url} is {self.slug}"

El código anterior crea una tabla UrlData en nuestra base de datos con columnas url , slug . Usaremos la columna url para almacenar la URL original y el slug para almacenar una string de 10 caracteres que se usará para acortar la URL.

Por ejemplo,

Original URL — https://medium.com/satyam-kulkarni/
Shorten Form — https://localhost:8000/sEqlKdsIUL

La longitud máxima de URL es de 200 caracteres y la longitud máxima de Slug es de 15 (considerando la dirección de nuestro sitio web). Después de crear modelos para nuestro sitio web, creemos algunos formularios para recibir información del usuario. 

Crear un formulario

Cree un archivo forms.p y en nuestra carpeta de aplicaciones de Django.

formularios.py _

from django import forms
class Url(forms.Form):
    url = forms.CharField(label="URL")

Simplemente importamos formularios de django y creamos una URL de clase que usaremos en las vistas . py y renderícelo en nuestro HTML. El formulario de URL solo tiene un campo de URL para ingresar la URL original.

Creación de vistas

Ahora, crearemos la interfaz de nuestra aplicación usando vistas . py _ Dividamos esta parte en Funciones.

urlShort() : esta función es donde funciona nuestro algoritmo principal . Toma una URL del formulario después de que el usuario la envía, luego genera un Slug aleatorio que luego se almacena en la base de datos con la URL original. También es la función que representa el índice . html (punto de entrada de nuestra aplicación)

vistas.py urlCorto()

def urlShort(request):
    if request.method == 'POST':
        form = Url(request.POST)
        if form.is_valid():
            slug = ''.join(random.choice(string.ascii_letters)
                           for x in range(10))
            url = form.cleaned_data["url"]
            new_url = UrlData(url=url, slug=slug)
            new_url.save()
            request.user.urlshort.add(new_url)
            return redirect('/')
    else:
        form = Url()
    data = UrlData.objects.all()
    context = {
        'form': form,
        'data': data
    }
    return render(request, 'index.html', context)


urlRedirect() : esta función rastrea el slug hasta la URL original y lo redirige a la URL original.

vistas.py urlRedirect()

def urlRedirect(request, slugs):
    data = UrlData.objects.get(slug=slugs)
    return redirect(data.url)

Creación de rutas 

Antes de ejecutar esta aplicación, debemos especificar las rutas de URL en urls.py de la aplicación

urls.py

from django.urls import path
from . import views
app_name = "url"
urlpatterns = [
    path("", views.urlShort, name="home"),
    path("u/<str:slugs>", views.urlRedirect, name="redirect")
]

Ejecutar el proyecto

Abra la consola en el directorio principal del proyecto.

python manage.py runserver

Producto final del proyecto: 

Publicación traducida automáticamente

Artículo escrito por sk1122 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *