Django中的URL验证指南

概述

在网络开发中,验证URL是确保数据完整性和预防错误的重要环节。Django提供了内置的工具,使得URL验证变得简单而可靠。利用Django的URLValidator,我们可以在将URL存储到数据库中或在视图和表单中使用它们之前,检查其正确性。

Django的URL验证器

URLValidator 是Django的一个内置工具,用于确保字符串符合标准URL格式。

  • 支持 httphttps 等URL协议。
  • 检测格式错误的URL以防止 runtime 错误。
  • 可以在模型(Models)中验证用于存储的URL。
  • 可以在 forms 中验证用户输入的URL。
  • 可以在Python代码中独立使用,进行自定义验证。

在Django中使用URLValidator的步骤

让我们以一个名为 ‘bookstore‘ 的项目为例,其中包含一个名为 ‘mini‘ 的应用。现在,我们来创建一个模型(Model),并将通过视图(View)来创建它的实例。

步骤 1:定义模型

mini/models.py: 中:

from django.db import models

class ValidatedURL(models.Model):
    url = models.URLField(unique=True)

    def __str__(self):
        return self.url

在以上的 model.py 中:

  • URLField 会自动验证 URL。
  • unique=True 确保不会存储重复的 URL。

步骤 2:创建 form.py

mini/forms.py 中,创建一个用于提交 URL 的表单:

from django import forms
from django.core.validators import URLValidator

class URLForm(forms.Form):
    url = forms.URLField(
        label=‘Enter a URL‘,
        validators=[URLValidator()],
        widget=forms.TextInput(attrs={‘placeholder‘: ‘https://example.com/‘})
    )

在以上的 form.py 中:

  • URLValidator() 确保字符串遵循标准的 URL 语法。
  • widget=forms.TextInput 添加了一个占位符,以提供更好的用户体验。
  • 可以独立使用,无需依赖于模型,用于快速验证 URL。

步骤 3:创建视图

mini/views.py 中,定义视图以处理 URL 的提交和显示:

from django.shortcuts import render, redirect
from .forms import URLForm
from .models import ValidatedURL

def index(request):
    if request.method == ‘POST‘:
        form = URLForm(request.POST)
        if form.is_valid():
            url = form.cleaned_data[‘url‘]
            ValidatedURL.objects.create(url=url)
            return redirect(‘success‘)
    else:
        form = URLForm()
    return render(request, ‘url_validator_app/index.html‘, {‘form‘: form})

def success(request):
    validated_urls = ValidatedURL.objects.all()
    return render(request, ‘url_validator_app/success.html‘, {‘validated_urls‘: validated_urls})

在以上的 views.py 中:

  • index 视图处理表单显示 (GET) 和 URL 提交 (POST)。
  • 有效的 URL 将使用 ValidatedURL 模型保存到数据库中。
  • 成功提交后重定向到 success 视图。
  • success 视图检索所有已验证的 URL 并在模板中显示它们。

步骤 4:创建模板

模板处理用户交互 – 一个用于提交 URL,另一个用于显示已验证的 URL。

index.html: URL 提交表单




    URL Validator


    

URL Validator

{% csrf_token %} {{ form.as_p }}

在以上的 index.html 中:

  • 显示一个从 URLForm 创建的表单。
  • 使用 csrf_token 在 POST 请求期间保障安全。
  • 将表单数据提交到 index 视图进行验证。

template/index2.html: 显示已验证的 URL




    Validated URLs


    

Validated URLs

    {% for url in validated_urls %}
  • {{ url }}
  • {% empty %}
  • No validated URLs yet.
  • {% endfor %}
Back to validation

在以上的 index2.html 中:

  • 遍历存储在数据库中的所有已验证的 URL。
  • 以列表格式显示每个 URL。
  • 包含一个导航链接以返回验证表单。

步骤 5:配置 URL

为应用程序定义 URL 模式,以将视图与路由连接起来。

mini/urls.py: 中:

from django.urls import path
from . import views

urlpatterns = [
    path(‘‘, views.index, name=‘index‘),
    path(‘success/‘, views.success, name=‘success‘),
]

在以上的 urls.py 中:

  • 空的 path
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/21915.html
点赞
0.00 平均评分 (0% 分数) - 0