Как использовать валидатор URL в Django?

Программирование и разработка

В Django, популярной веб-инфраструктуре Python, проверку URL-адресов можно легко реализовать с помощью встроенных инструментов и библиотек. В этой статье мы рассмотрим, как использовать валидатор URL-адресов в Django, чтобы гарантировать, что URL-адреса в вашем веб-приложении действительны и безопасны.

Валидатор URL-адресов Django

Django предоставляет валидатор URL как часть встроенных инструментов проверки. Этот валидатор проверяет, действительна ли данная строка в соответствии со спецификацией URL. Чтобы использовать этот валидатор, выполните следующие действия:

Шаг 1. Создайте папку проекта и перейдите в каталог проекта.

django-admin startproject bookstore
cd bookstore

Активировать виртуальную среду (необязательно)

Шаг 2. Создайте приложение Django

Внутри вашего проекта создайте приложение Django с именем «mini»:

python manage.py startapp mini

Шаг 3: Определите модель

В этом примере мы создадим простую модель для хранения проверенных URL-адресов. Откройте файл models.py в папке url_validator_app и определите модель следующим образом:

Python3

# mini/models.py
from django.db import models
class ValidatedURL(models.Model):
    url = models.URLField(unique=True)
    def __str__(self):
        return self.url

Шаг 4. Создайте form.py

Определив этот класс формы, мы создали структуру для сбора и проверки ввода URL-адресов от пользователей. Он инкапсулирует логику, необходимую для проверки URL-адресов, что упрощает его использование в наших представлениях и шаблонах.

Python3

# mini/forms.py
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'})
    )

Шаг 5. Создайте представление приложения.

Представление индекса обрабатывает проверку URL-адресов и отправку форм, а представление успеха отображает список проверенных URL-адресов.

Python3

# mini/views.py
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})

Шаг 6: Создайте шаблоны

Создайте два HTML-шаблона: один для формы, а другой для отображения проверенных URL-адресов. Создайте папку шаблонов в каталоге вашего приложения и добавьте следующие шаблоны:

template/index.html: URL Validator

HTML

<!DOCTYPE html>
<html>
<head>
    <title>URL Validator</title>
</head>
<body>
    <h1>URL Validator</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Submit</button>
    </form>
</body>
</html>

template/index2.html: Validated URLs

HTML

<!DOCTYPE html>
<html>
<head>
    <title>Validated URLs</title>
</head>
<body>
    <h1>Validated URLs</h1>
    <ul>
        {% for url in validated_urls %}
            <li>{{ url }}</li>
        {% empty %}
            <li>No validated URLs yet.</li>
        {% endfor %}
    </ul>
    <a href="{% url 'index' %}">Back to validation</a>
</body>
</html>

Шаг 7. Настройте URL-адреса в файле mini/urls.py.

Настройте URL-адреса вашего приложения, создав файл urls.py в папке приложения:

Python3

# mini/urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
    path('success/', views.success, name='success'),
]

Шаг 8. Включите URL-адреса приложений в URL-адреса проекта.

urls.py : в urls.py вашего проекта включите URL-адреса вашего приложения:

Python3

# url_validator_project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('mini.urls')),
]

 

Читайте также:  Как инициализировать массив в Java?
Оцените статью
bestprogrammer.ru
Добавить комментарий