如何用Django建立一个URL缩短器

如何用Django建立一个URL缩短器

构建一个URL缩短器,是磨练你的技能的最佳初级项目之一。在这篇文章中,我们分享了使用Django框架建立一个URL缩短器的步骤。

环境搭建

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

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缩短器项目

请系紧你的安全带,因为我们要开始编码了。首先,我们将使用views.pyviews.py基本上是用来连接我们的数据库,api和我们的前端。打开views.py并输入

from django.http import HttpResponse


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

基本上,如果你在views.py里面写了任何函数,它都不会起作用,但我们需要把它映射到urls.p y里面。因此,在url文件夹里创建一个urls.py

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

不要忘记在settings.pyINSTALLED_APPS中添加你的app – “ url

创建Django模型 –

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

models.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,其列是url , slug。我们将使用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

forms.py

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

我们只需从django中导入forms并创建一个Url类,我们将在views中使用。py并在我们的HTML中渲染。Url表单只有一个url字段,用于输入原始URL。

Creating 视图

现在,我们将使用views创建我们应用程序的界面。py 。让我们把这部分划分为几个函数。

urlShort() – 这个函数是我们的主算法工作的地方。它在用户提交后从表单中获取一个url,然后生成一个随机的Slug,然后与原始Url一起存储在数据库中。它也是渲染index的函数。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() – 这个函数跟踪lug到原始URL,并将其重定向到原始URL。

views.py urlRedirect()

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

Creating 路由

在运行这个应用程序之前,我们需要在应用程序的urls.py中指定URL路径。

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")
]

运行该项目

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

python manage.py runserver

如何用Django建立一个URL缩短器?

最终的项目产出 –

如何用Django建立一个URL缩短器?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Django 教程