Поле UUIDField
Поле UUIDField в Django формах предназначено для валидации и обработки данных, представляющих собой универсальные уникальные идентификаторы (UUID). Это поле автоматически преобразует входные данные в объект uuid.UUID и обратно, обеспечивая корректную работу с этим типом данных. Поле принимает строковые представления UUID как в формате с дефисами, так и без них, а также в виде UUID объектов.
Синтаксис
from django import forms
class MyForm(forms.Form):
uuid_field = forms.UUIDField(**options)
Пример
Давайте создадим форму с полем UUIDField для ввода идентификатора пользователя:
from django import forms
import uuid
class UserForm(forms.Form):
user_id = forms.UUIDField(label="User ID", required=True)
Пример
Рассмотрим пример валидации поля с передачей строкового представления UUID:
from django import forms
import uuid
class ProductForm(forms.Form):
product_uuid = forms.UUIDField(label="Product UUID")
# Создание формы с валидными данными
form = ProductForm({
'product_uuid': '550e8400-e29b-41d4-a716-446655440000'
})
if form.is_valid():
print("Data is valid")
print(f"UUID object: {form.cleaned_data['product_uuid']}")
else:
print("Data is invalid")
print(form.errors)
Результат выполнения кода:
"Data is valid"
"UUID object: 550e8400-e29b-41d4-a716-446655440000"
Пример
Поле UUIDField также может принимать UUID объекты напрямую:
from django import forms
import uuid
class CategoryForm(forms.Form):
category_uuid = forms.UUIDField()
# Создание формы с UUID объектом
uuid_obj = uuid.uuid4()
form = CategoryForm({
'category_uuid': uuid_obj
})
if form.is_valid():
print("UUID object accepted")
print(f"Value: {form.cleaned_data['category_uuid']}")
print(f"Type: {type(form.cleaned_data['category_uuid'])}")
Результат выполнения кода:
"UUID object accepted"
"Value: a1b2c3d4-e5f6-7890-abcd-ef1234567890"
"Type: <class 'uuid.UUID'>"
Пример
При попытке передать невалидные данные поле выбрасывает ошибку валидации:
from django import forms
class TestForm(forms.Form):
code = forms.UUIDField()
# Создание формы с невалидными данными
form = TestForm({
'code': 'not-a-uuid-string'
})
if form.is_valid():
print("Valid")
else:
print("Invalid")
print(f"Errors: {form.errors}")
Результат выполнения кода:
"Invalid"
"Errors: {'code': ['Enter a valid UUID.']}"
Смотрите также
-
класс
Form,
который является базовым классом для создания форм -
атрибут
cleaned_data,
который содержит валидированные данные формы -
метод
is_valid,
который выполняет валидацию полей формы -
поле
CharField,
которое используется для работы со строковыми данными