如何在 Django 中创建 URL 缩短器?

这个例子的重点是如何在 django 中创建 url shortener。
我想与您分享 django 中的 url shortener。
我一步一步简单地解释了如何在 python django 中创建一个 url shortener。
本文详细介绍了如何在 django 中制作 url 缩短器。

Django Rest Framework 最流行的应用之一是在 Django 模板中显示 API 数据。您可能需要在项目的某个时刻使用 API 数据。在这篇博客中,我们将学习如何使用 Django 模板在 HTML 中显示 API 响应。

在这里我会给你我们会帮助你举个例子 django 搜索自动完成输入字段的例子。那么让我们看看下面的例子:

第 1 步:创建项目

在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:

 django-admin startproject example 

第 2 步:创建应用

cd example
django-admin startapp core

第 3 步:更新 settings.py

接下来需要在settings.py文件中添加如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',
]

第 4 步:创建模型

现在去我们将要使用的模型 我们将调用我们的单一模型 Post 并且它只有两个字段:urlslug。最后设置__str__以在管理界面中显示帖子的名称。 core/models.py

from django.db import models

# Create your models here.
class Url(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}"

好的,一切就绪。我们可以为此更改生成一个迁移文件,然后通过迁移将其集成到我们的数据库中。

python manage.py makemigrations
python manage.py migrate

第 5 步:创建表单

在这一步中,我们需要创建一个将要使用的表单。 core/forms.py

from django import forms

class UrlForm(forms.Form):
    url = forms.CharField(label="URL")

第 6 步:创建视图

在这一步中,我们需要创建用于执行从 jsonplaceholder post api 记录中获取数据的视图。打开 core/views.py 文件并添加:
core/views.py

from django.shortcuts import render, redirect
from .models import Url
from .forms import UrlForm
from django.contrib import messages
import random
import string

# Create your views here.
def urlShort(request):
    if request.method == 'POST':
        form = UrlForm(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 = Url(url=url, slug=slug)
            new_url.save()
            # request.user.urlshort.add(new_url)
            return redirect('/')
    else:
        form = Url()
    data = Url.objects.all()
    context = {
        'form': form,
        'data': data
    }
    return render(request, 'url.html', context)

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

第 7 步:创建模板

接下来,打开 core/templates/url.html 文件并添加:
/core/templates/url.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tuts-Station.com</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
    <style type="text/css">
        body{
            background-color: #f7fcff;
        }
    </style>
</head>
<body>
    <div class="container mt-5 pt-5">
        <div class="row d-flex justify-content-center">
            <div class="col-md-9">
                <div class="card">
                    <div class="card-header">
                        <h3>How to Create URL Shortener in Django? - <span class="text-primary">Tuts-Station.com</span></h3>
                    </div>
                    <div class="card-body">
                        <form action="{% url 'urlShort' %}" method="POST">
                            {% csrf_token %}
                            <div class="row">
                                <div class="col-md-12">
                                    <label>URL</label>
                                    <input type="text" class="form-control" name="url">
                                </div>
                            </div>
                            <div class="row mt-2">
                                <div class="col-md-12">
                                    <button type="submit" class="btn btn-success">Submit</button>
                                </div>
                            </div>
                        </form>

                        <table class="table mt-4">
                            <thead>
                                <tr>
                                    <th>Old url</th>
                                    <th>New url</th>
                                </tr>
                            </thead>
                            {% for i in data %}
                            <tbody>
                                <tr>
                                    <td>{{i.url}}</td>
                                    <td>{{i.slug}}</td>
                                </tr>
                            </tbody>
                            {% endfor %}
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

第 8 步:创建网址

在本节中,我们将创建 url 来访问我们的视图。转到 urls.py core/urls.py 文件并按如下方式更新它: core/urls.py

from django.urls import path
from core import views

urlpatterns = [
    path("", views.urlShort, name="urlShort"),
    path("<str:slugs>", views.urlRedirect, name="redirect")
]

接下来,我们将要求修改 urls.py 您的根 preoject 文件夹让更新文件。
example/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('core.urls')),
]

第 8 步:运行服务器

在此步骤中,我们将运行本地开发服务器来使用我们的应用程序,而无需将其部署到 Web。

python manage.py runserver

接下来,使用 Web 浏览器转到 http://localhost:8000 地址。

我希望它能帮助你……

发表评论

邮箱地址不会被公开。 必填项已用*标注