В 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')),
]