如何使用 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.py 。 views.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.py的INSTALLED_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和列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 。
表格.py
from django import forms
class Url(forms.Form):
url = forms.CharField(label="URL")
我们简单地从django导入表单并创建一个我们将在视图中使用的类Url 。 py并在我们的 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