{"id":320,"date":"2024-04-05T16:20:52","date_gmt":"2024-04-05T19:20:52","guid":{"rendered":"https:\/\/difusao.tech\/blog\/?p=320"},"modified":"2024-04-10T13:26:59","modified_gmt":"2024-04-10T16:26:59","slug":"criando-um-sistema-de-cadastro-com-django-parte-3","status":"publish","type":"post","link":"https:\/\/difusao.tech\/blog\/criando-um-sistema-de-cadastro-com-django-parte-3\/","title":{"rendered":"Criando um sistema de cadastro com Django \u2013 Parte 3"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"125\" height=\"63\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/djangoddd-1.png\" alt=\"\" class=\"wp-image-294\" style=\"width:151px;height:auto\"\/><\/figure>\n<\/div>\n\n\n<p>Dando sequencia no nosso sistema de cadastro e caso n\u00e3o tenha visto as partes anteriores, segue o link:<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/difusao.tech\/blog\/index.php\/2024\/04\/01\/hello-world-em-python-usando-django\/\">Hello world em Python usando Django<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/difusao.tech\/blog\/index.php\/2024\/04\/01\/criando-um-sistema-de-cadastro-com-django-parte-1\/\">Criando um sistema de cadastro com Django \u2013 Parte 1<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/difusao.tech\/blog\/index.php\/2024\/04\/03\/criando-um-sistema-de-cadastro-com-django-parte-2\/\">Criando um sistema de cadastro com Django \u2013 Parte 2<\/a><\/p>\n\n\n\n<p>Neste post vamos realizar a parte de cadastro dentro do nosso banco de dados, segue abaixo as partes que vamos abranger neste post.<\/p>\n\n\n\n<p>1 &#8211; Configurar o formul\u00e1rio para envio das informa\u00e7\u00f5es que o usu\u00e1rio vai digitar para o cadastro.<\/p>\n\n\n\n<p>2 &#8211; Preparar o modelo a ser utilizado pelo banco de dados.<\/p>\n\n\n\n<p>3 &#8211; Configurar a view para receber as informa\u00e7\u00f5es do form e salvar no banco de dados.<\/p>\n\n\n\n<p>4 &#8211; Listar os usu\u00e1rios do banco.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>Configurar o formul\u00e1rio para envio das informa\u00e7\u00f5es que o usu\u00e1rio vai digitar para o cadastro.<\/strong><\/p>\n\n\n\n<p>Vamos no site do bootstrap e pegar um formul\u00e1rio para incluir no nosso projeto, segue abaixo o form que vamos utilizr.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"758\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-24-1024x758.png\" alt=\"\" class=\"wp-image-324\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-24-1024x758.png 1024w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-24-300x222.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-24-768x569.png 768w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-24.png 1055w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Depois de copiar o c\u00f3digo do formul\u00e1rio clicando no icone da prancheta, cole ele logo ap\u00f3s o seu navbar na p\u00e1gina de cadastro, ficando assim:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"864\" height=\"765\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-25.png\" alt=\"\" class=\"wp-image-325\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-25.png 864w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-25-300x266.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-25-768x680.png 768w\" sizes=\"auto, (max-width: 864px) 100vw, 864px\" \/><\/figure>\n\n\n\n<p>Vamos colocar um container para melhorar a estiliza\u00e7\u00e3o, usaremos a tag &lt;div class=&#8221;container-sm&#8221;&gt; antes da tag &lt;form&gt; e fechamos com &lt;div&gt; depois da tag &lt;\/form&gt;.<\/p>\n\n\n\n<p>E vou fazer o mesmo com aquele texto hello world dentro do h1 e vou mudar o texto para cadastro, sendo que vou mover ele para antes da div do form, ficando tudo assim:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"723\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-26.png\" alt=\"\" class=\"wp-image-326\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-26.png 843w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-26-300x257.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-26-768x659.png 768w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/figure>\n\n\n\n<p>Agora sim vamos editar o nosso form e preparar ele para o envio das informa\u00e7\u00f5es.<\/p>\n\n\n\n<p>Vou deixar os campos do formul\u00e1ro somente com nome, email e setor e tamb\u00e9m vamos colocar o atributo name dentro dos inputs com o seus respectivos nomes, ficando assim o nosso form editado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"348\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-27.png\" alt=\"\" class=\"wp-image-327\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-27.png 605w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-27-300x173.png 300w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/figure>\n\n\n\n<p>Agora vamos preparar o form para o envio, adicionano o action e o metodo post, devemos incluir tamb\u00e9m ap\u00f3s a tag de abertura do form o csrf_token, necess\u00e1rio para envio de informa\u00e7\u00f5es de um form para uma p\u00e1gina interna.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"98\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-28.png\" alt=\"\" class=\"wp-image-328\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-28.png 588w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-28-300x50.png 300w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>Preparar o modelo a ser utilizado pelo banco de dados.<\/strong><\/p>\n\n\n\n<p>Vamos abrir o arquivo models.py dentro da pasta da aplica\u00e7\u00e3o e vamos preparar o nosso modelo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"663\" height=\"254\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-29.png\" alt=\"\" class=\"wp-image-329\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-29.png 663w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-29-300x115.png 300w\" sizes=\"auto, (max-width: 663px) 100vw, 663px\" \/><\/figure>\n\n\n\n<p>Esse modelo vai ser preparado e ser\u00e1 criado no banco de dados uma tabela com esse nome e essas colunas, caso voc\u00ea queira saber mais sobre os tipos de dados que pode ser utilizados vou deixar o link abaixo:<\/p>\n\n\n\n<p>Tipos de dados: <a href=\"https:\/\/difusao.tech\/blog\/index.php\/2024\/04\/05\/lista-de-campos-e-tipos-de-dados-do-modelo-basico-tipos-de-dados-django\/\">clique aqui!<\/a><\/p>\n\n\n\n<p>Ap\u00f3s a cria\u00e7\u00e3o do modelo vamos executar os comandos a seguir no Powsershell, abrar com control + j:<\/p>\n\n\n\n<p><mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">python manage.py makemigrations<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"165\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-30.png\" alt=\"\" class=\"wp-image-330\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-30.png 612w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-30-300x81.png 300w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">python manage.py migrate<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"274\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-31.png\" alt=\"\" class=\"wp-image-331\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-31.png 584w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-31-300x141.png 300w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Feito isso vamos instalar a extens\u00e3o sqlite view para ver como ficou o nosso banco.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1002\" height=\"375\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-32.png\" alt=\"\" class=\"wp-image-332\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-32.png 1002w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-32-300x112.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-32-768x287.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/figure>\n\n\n\n<p>Vamos abrir o banco e visualizar nossa tabela, ela vai estar junto com outras que s\u00e3o nativas do framework.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"641\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-33-1024x641.png\" alt=\"\" class=\"wp-image-333\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-33-1024x641.png 1024w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-33-300x188.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-33-768x481.png 768w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-33.png 1113w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Conseguimos ver a nossa tabela e as colunas criadas.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>Configurar a view para receber as informa\u00e7\u00f5es do form e salvar no banco de dados.<\/strong><\/p>\n\n\n\n<p>Agora vamos preparar a nossa view de usu\u00e1rios para receber as informa\u00e7\u00f5es que ser\u00e3o enviadas do formul\u00e1rio na p\u00e1gina de cadastro.<\/p>\n\n\n\n<p>Vamos editar a nossa fun\u00e7\u00e3o def usuarios, ficando assim:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"569\" height=\"678\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-34.png\" alt=\"\" class=\"wp-image-334\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-34.png 569w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-34-252x300.png 252w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><\/figure>\n\n\n\n<p>Rode o servidor e teste o formul\u00e1rio, ap\u00f3s clicar em salvar no formul\u00e1rio, visualize a sua tabela no banco e verifique se criou o usu\u00e1rio informado.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"824\" height=\"356\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-35.png\" alt=\"\" class=\"wp-image-335\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-35.png 824w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-35-300x130.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-35-768x332.png 768w\" sizes=\"auto, (max-width: 824px) 100vw, 824px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>Listar os usu\u00e1rios do banco.<\/strong><\/p>\n\n\n\n<p>Agora vamos fazer uma altera\u00e7\u00e3o na fun\u00e7\u00e3o def usuarios para conseguir listar os usu\u00e1rios logo ap\u00f3s o envio de um novo usu\u00e1rio.<\/p>\n\n\n\n<p>E depois vamos incluir um if para que quando a rota seja acessada diretamente ele somente exiba os usu\u00e1rios no banco, sem a necessidade de executar o bloco que salva no banco, ficar\u00e1 como a seguir:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"594\" height=\"336\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-36.png\" alt=\"\" class=\"wp-image-336\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-36.png 594w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-36-300x170.png 300w\" sizes=\"auto, (max-width: 594px) 100vw, 594px\" \/><\/figure>\n\n\n\n<p>Onde \u00e1 vari\u00e1vel <strong>usuarios <\/strong>esta fazendo uma consulta ao modelo e solicitando todos os objetos do banco e o if verifica se no carregamento da rota foi feito com um post ou n\u00e3o, caso seja feito com um method post ela vai salvar as informa\u00e7\u00f5es recebidas no banco.<\/p>\n\n\n\n<p>Em seguida vamos criar uma tabela no arquivo html da rota usuarios e colocar um for para percorrer a vari\u00e1vel que recebeu as informa\u00e7\u00f5es do banco, ficando assim:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"713\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-37.png\" alt=\"\" class=\"wp-image-337\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-37.png 791w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-37-300x270.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2024\/04\/image-37-768x692.png 768w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/figure>\n\n\n\n<p>Agora voc\u00ea consegue acessar a rota usu\u00e1rios diretamente e visualizar os usu\u00e1rios cadastrados.<\/p>\n\n\n\n<p>Vamos continuar o nosso sisteminha em um pr\u00f3ximo post:<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/difusao.tech\/blog\/index.php\/2024\/04\/08\/criando-um-sistema-de-cadastro-com-django-parte-4\/\">Criando um sistema de cadastro com Django \u2013 Parte 4<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dando sequencia no nosso sistema de cadastro e caso n\u00e3o tenha visto as partes anteriores, segue o link:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,157],"tags":[222,158],"class_list":["post-320","post","type-post","status-publish","format-standard","hentry","category-programacao-e-desenvolvimento","category-python","tag-django","tag-python"],"_links":{"self":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/comments?post=320"}],"version-history":[{"count":4,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/320\/revisions"}],"predecessor-version":[{"id":356,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/320\/revisions\/356"}],"wp:attachment":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/media?parent=320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/categories?post=320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/tags?post=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}