📜  如何使用 Django 构建 URL Shortener?

📅  最后修改于: 2022-05-13 01:54:54.038000             🧑  作者: Mango

如何使用 Django 构建 URL Shortener?

构建 URL Shortener,是磨练技能的最佳初学者项目之一。在本文中,我们分享了使用 Django 框架构建 URL 缩短器的步骤。要了解有关 Django 的更多信息,请访问 – Django 教程

设置

在开始我们的项目之前,我们需要设置一些东西。我们将在我们的项目中使用虚拟环境。

pip install virtualenv
virtualenv urlShort
source urlShort/bin/activate

以上命令将创建、激活名为urlShort的虚拟环境。

安装重要包

我们需要事先安装一些软件包,

pip install django

从我们的项目开始

首先,我们需要通过以下方式创建我们的项目,

django-admin startproject urlShort
cd urlShort

在命令上方,创建一个 Django 项目,然后 cd 进入该目录。之后,我们还需要在我们的项目中创建一个应用程序。应用程序是一种容器,我们将在其中存储我们的代码。一个项目可以有多个应用程序,它们可以相互连接

python manage.py startapp url

以上命令在我们的项目中创建一个名为 URL 的应用程序。我们的文件结构现在将是——

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

检查是否一切正常……

你可以通过在命令行中输入这个来检查是否一切正常。但是 cd 进入主文件夹,这里是 urlShort。

python manage.py runserver

runserver将运行一个本地服务器,我们的网站将在其中加载。移动到网址

https://localhost:8000

保持控制台窗口打开。

如何构建一个 URL Shortener 项目?

当我们开始编码时,请系紧您的安全带。首先,我们将使用views.pyviews.py基本上用于连接我们的数据库、api 和我们的前端。打开views.py并输入

from django.http import HttpResponse


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

保存并打开 localhost 并检查它是否更改。它不会更改,因为我们没有将其映射到任何路由。基本上,如果您在views.py中编写任何函数它都不起作用,但我们需要将其映射到urls.p 中是的因此,在url文件夹中创建一个urls.py。

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

不要忘记在settings.pyINSTALLED_APPS中添加您的应用程序 - “ url

创建 Django 模型——

首先,我们需要一个数据库来存储我们的缩短 URL。为此,我们需要在 models.py 中为我们的数据库表创建一个架构。

模型.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}"

上面的代码在我们的数据库中创建了一个表UrlData和列urlslug 。我们将使用 url 列存储原始 URL,使用slug存储 10 个字符的字符串,用于缩短 URL。

例如,

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

URL 的最大长度为 200 个字符,Slug 的最大长度为 15(考虑到我们网站的地址)。在为我们的网站创建模型之后,让我们创建一些表单来接收用户的输入。

创建表单

在我们的 Django 应用文件夹中创建一个forms.py

表格.py

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

我们简单地从django导入表单并创建一个我们将在视图中使用的类Urlpy并在我们的 HTML 中呈现它。 Url表单只有一个url字段来输入原始 URL。

创建视图

现在,我们将使用视图创建我们的应用程序的界面。。让我们在函数中划分这部分。

urlShort() — 这个函数是我们的主要算法工作的地方。在用户提交表单后,它从表单中获取一个url ,然后生成一个随机 Slug,然后将其存储在具有原始 Url 的数据库中。它也是呈现索引的函数。 html (我们的应用程序的入口点)

views.py urlShort()

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() — 此函数跟踪 slug 到原始 URL 并将其重定向到原始 URL。

views.py urlRedirect()

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

创建路线

在运行这个 App 之前,我们需要在 App 的urls.py中指定 URL 路径

网址.py

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

运行项目

在主项目目录中打开控制台。

python manage.py runserver

最终项目输出 –