Django

Como usar os serializadores Django

Como usar os serializadores Django
O serializador é usado no Django para converter as instâncias do modelo ou querysets em tipos de dados suportados por Python que podem ser facilmente renderizados em JSON, XML ou outros formatos. A desserialização também pode ser feita por serializadores para recuperar os dados originais dos dados serializados. Este recurso está disponível no Django REST Framework. Então, os usuários têm que instalar este framework para usar os serializadores. Qualquer página da web do site pode conter HTML, CSS e dados das tabelas do banco de dados. Mas a API não entende esses tipos de conteúdo, e pode entender apenas os dados brutos, ou seja, dados JSON. Como os serializadores podem ser usados ​​para converter a instância do modelo no formato JSON é mostrado neste tutorial.

Pré-requisitos:

Antes de praticar o script deste tutorial, você deve concluir as seguintes tarefas.

  1. Instale o Django versão 3+ no Ubuntu 20+ (de preferência)
  2. Crie um projeto Django
  3. Execute o servidor Django para verificar se o servidor está funcionando corretamente ou não.

Configure um aplicativo Django para serializadores:

Execute o seguinte comando para criar um aplicativo Django chamado serialapp.

$ python3 manage.py startapp serialapp

Execute o seguinte comando para criar o usuário para acessar o banco de dados Django. Se você já criou o usuário antes, não precisa executar o comando.

$ python3 manage.py cria superusuário

Execute o seguinte comando para instalar o Django REST Framework.

$ pip3 install djangorestframework

Adicione o rest_framework e o nome do aplicativo no INSTALLED_APP parte de definições.py Arquivo.

INSTALLED_APPS = [
… .
'rest_framework',
'serialapp'
]

Crie um modelo para a tabela de banco de dados:

Abra o modelos.py arquivo do serialapp pasta e adicione o seguinte script para definir a estrutura de clientes mesas. Cliente classe é definida para criar uma tabela chamada clientes com nome, endereço, e-mail, contato_no, e criada Campos. Aqui, nome, email, e contact_no campos irão armazenar dados de caracteres, o endereço campo irá armazenar os dados de texto, e criada campo irá armazenar os dados DateTime.

modelos.py

# Importe o módulo de modelos
de django.modelos de importação db
# Defina a classe do modelo para a mesa de clientes
classe Cliente (modelos.Modelo):
nome = modelos.CharField (max_length = 100)
endereço = modelos.Campo de texto()
email = modelos.CharField (max_length = 50)
contact_no = models.CharField (max_length = 20)
criado = modelos.DateTimeField (auto_now_add = True)

Execute o fazer migrações comando para criar uma nova migração com base nas mudanças feitas pelos modelos.

$ python3 manage.py makemigrations serialapp

Execute o migrar comando para executar os comandos SQL e criar todas as tabelas no banco de dados definido no modelos.py Arquivo.

$ python3 manage.py migrar

Modifique o conteúdo do admin.py arquivo com o seguinte conteúdo. Aqui, o consumidor classe dos modelos é registrada usando o registro() método para exibir o clientes tabelas no painel de administração do Django.

admin.py

# Importar módulo de administração
de django.contrib import admin
# Importe o modelo do cliente
a partir de .clientes de importação de modelos
# Cadastre o modelo do cliente
admin.local.registrar (cliente)

urls.py

de django.caminho de importação de urls
de django.contrib import admin
urlpatterns = [
# Defina o caminho para o administrador
caminho ('admin /', admin.local.urls),
]

Adicione registros à tabela:

Abra a página de administração do Django e adicione alguns registros no clientes tabela exibida para o navegador no formato JSON. Aqui, três registros foram inseridos.

Modifique as visualizações.py:

Abra o Visualizações.py arquivo do serialapp e substitua o conteúdo pelo seguinte script. Lista de clientes classe é definida para serializar todos os registros dos clientes e retornar os dados para o navegador no formato JSON. CustomerDetail classe é definida para serializar o registro do cliente específico com base no valor de ID e retornar os dados do navegador no formato JSON. CustomerSerializer é um arquivo serializador que foi criado na próxima parte deste tutorial.

Visualizações.py

# Importar genéricos do Django REST Framework
from rest_framework import generics
# Importar modelo de cliente
a partir de .clientes de importação de modelos
# Importar CustomerSerializer de serializadores
a partir de .serializadores import CustomerSerializer
# Defina a classe para converter todos os registros da tabela de clientes em JSON
classe CustomerList (genéricos.ListCreateAPIView):
queryset = Customer.objetos.tudo()
serializer_class = CustomerSerializer
# Defina a classe para converter o registro particular da tabela de clientes em JSON
classe CustomerDetail (genéricos.RetrieveUpdateDestroyAPIView):
queryset = Customer.objetos.tudo()
serializer_class = CustomerSerializer

Criar serializador:

Crio serializadores.py arquivo no mesmo local do Visualizações.py arquivo com o seguinte script. ModelSerializer classe é usada aqui para criar CustomerSerializer classe que retorna a classe serializadores com os campos do modelo do cliente. Os campos do modelo do cliente que serão convertidos em formato JSON são mencionados no Meta aula.

serializadores.py

# Importar módulo serializadores do Django REST Framework
de serializadores de importação rest_framework
# Importar modelo de cliente
a partir de .clientes de importação de modelos
# Defina a classe de serializadores personalizados para converter os campos do modelo do cliente em JSON
classe CustomerSerializer (serializadores.ModelSerializer):
classe Meta:
modelo = cliente
campos = ('id', 'nome', 'endereço', 'e-mail', 'contato_no')

Modifique os urls.arquivo py:

Modifique o conteúdo do urls.py arquivo com o seguinte script. No script, o 'clientes/'caminho é definido para exibir todos os registros do clientes tabela no formato JSON, e o 'clientes//'caminho é definido para exibir os dados particulares do clientes tabela no formato JSON com base no valor de ID.

urls.py

# Importar módulo de administração
de django.contrib import admin
# Importar caminho e incluir módulo
de django.caminho de importação de urls
# Importe as visualizações
de visualizações de importação serialapp
# Importar format_suffix_patterns do Django REST Framework
de rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
# Defina o caminho para o administrador
caminho ('admin /', admin.local.urls),
# Defina o caminho para obter todos os dados dos clientes no formato JSON
caminho ('clientes /', visualizações.Lista de clientes.as_view ()),
# Defina o caminho para obter os dados específicos do cliente com base na ID no formato JSON
caminho ('clientes //', visualizações.CustomerDetail.as_view ()),
]
urlpatterns = format_suffix_patterns (urlpatterns)

Todos os registros da tabela de clientes serão mostrados no formato JSON se o seguinte URL for executado.

http: // localhost: 8000 / clientes

O registro do segundo cliente será mostrado no formato JSON se o seguinte URL for executado.

http: // localhost: 8000 / clientes / 2

Conclusão:

O uso de serializadores no aplicativo Django para converter a instância do modelo no formato JSON foi mostrado neste tutorial usando um script simples. Os usuários do Django irão entender o propósito de usar serializadores e aplicá-los em seus aplicativos se necessário depois de ler este tutorial.

Os 5 principais produtos ergonômicos de mouse de computador para Linux
O uso prolongado do computador causa dor no pulso ou nos dedos? Você está sofrendo de rigidez nas articulações e constantemente precisa apertar as mão...
Como alterar as configurações do mouse e touchpad usando Xinput no Linux
A maioria das distribuições Linux vem com a biblioteca “libinput” por padrão para lidar com eventos de entrada em um sistema. Ele pode processar event...
Remapeie os botões do mouse de maneira diferente para software diferente com o controle de botão do mouse X
Talvez você precise de uma ferramenta que possa fazer o controle do seu mouse mudar com cada aplicativo que você usa. Se for esse o caso, você pode ex...