如何用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.py。views.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.py的INSTALLED_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