{"id":10677,"date":"2023-08-21T20:22:44","date_gmt":"2023-08-21T23:22:44","guid":{"rendered":"https:\/\/www.homehost.com.br\/blog\/?p=10677"},"modified":"2026-08-15T08:18:43","modified_gmt":"2026-08-15T11:18:43","slug":"criando-primeira-aplicacao-django-python","status":"publish","type":"post","link":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/","title":{"rendered":"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Este tutorial mostra, passo a passo, como criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem com cPanel \u2014 da instala\u00e7\u00e3o do Python \u00e0 configura\u00e7\u00e3o dos arquivos est\u00e1ticos, com o projeto no ar ao final.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Conte\u00fado<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#Criando_sua_primeira_aplicacao_Django\" title=\"Criando sua primeira aplica\u00e7\u00e3o Django\">Criando sua primeira aplica\u00e7\u00e3o Django<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#Instalar_o_Django_na_aplicacao_Python\" title=\"Instalar o Django na aplica\u00e7\u00e3o Python\">Instalar o Django na aplica\u00e7\u00e3o Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#Criar_um_projeto\" title=\"Criar um projeto\">Criar um projeto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#Perguntas_frequentes\" title=\"Perguntas frequentes\">Perguntas frequentes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#Conclusao\" title=\"Conclus\u00e3o\">Conclus\u00e3o<\/a><\/li><\/ul><\/nav><\/div>\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Criando_sua_primeira_aplicacao_Django\"><\/span>Criando sua primeira aplica\u00e7\u00e3o Django<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Este tutorial usa o <strong>Python 3.13<\/strong> e o <strong>Django 5.2 LTS<\/strong> como refer\u00eancia. Novas vers\u00f5es s\u00e3o habilitadas periodicamente no painel, e voc\u00ea pode escolher vers\u00f5es anteriores durante a cria\u00e7\u00e3o da aplica\u00e7\u00e3o \u2014 o Django 4.2 LTS, por exemplo, ainda recebe suporte de seguran\u00e7a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiramente, acesse seu <a href=\"https:\/\/www.homehost.com.br\/blog\/cpanel\/o-que-e-cpanel\/\">painel de controle cPanel<\/a> e procure a op\u00e7\u00e3o \u201c<strong>Setup Python App<\/strong>\u201d na guia Software.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-174244.png\" alt=\"\" width=\"882\" height=\"280\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, voc\u00ea encontrar\u00e1 a seguinte tela com a op\u00e7\u00e3o \u201c<strong>CRIAR APLICA\u00c7\u00c3O<\/strong>\u201d:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-174326-1024x483.png\" alt=\"\" width=\"1024\" height=\"483\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Em &#8220;Python version&#8221;, escolha a vers\u00e3o do Python que deseja. Os prints deste tutorial foram feitos com a 3.10, mas o processo \u00e9 id\u00eantico nas vers\u00f5es atuais.<\/p>\n\n\n<p>No campo &#8220;Raiz do aplicativo&#8221;, dever\u00e1 inserir o nome do seu aplicativo. Nesse exemplo iremos utilizar o nome &#8220;meuapp&#8221;.<\/p>\n<p>Os campos &#8220;Arquivo de inicializa\u00e7\u00e3o do aplicativo&#8221; e &#8220;Application Entry point&#8221; devem permanecer vazias, pois ser\u00e3o preenchidas automaticamente pelo cPanel.<\/p>\n<p>Na op\u00e7\u00e3o &#8220;Passenger log file&#8221; poder\u00e1 definir o caminho do arquivo que receber\u00e1 os logs de sua aplica\u00e7\u00e3o. Em nosso exemplo, iremos escolher o diret\u00f3rio &#8220;logs&#8221;.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-181919.png\" alt=\"\" width=\"1368\" height=\"692\" \/><\/p>\n<\/p>\n<p>Por fim, basta clicar em <b>CRIAR\u00a0<\/b>e sua aplica\u00e7\u00e3o ser\u00e1 criada.<\/p>\n<h2><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-181952.png\" alt=\"\" width=\"1379\" height=\"809\" \/><\/h2>\n<p>Como podemos ver os campos &#8220;Arquivo de inicializa\u00e7\u00e3o do aplicativo&#8221; e &#8220;Application Entry point&#8221; foram preenchidos de forma autom\u00e1tica pelo cPanel.\u00a0<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Instalar_o_Django_na_aplicacao_Python\"><\/span>Instalar o Django na aplica\u00e7\u00e3o Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>O pr\u00f3ximo passo \u00e9 instalar o Django nesta aplica\u00e7\u00e3o Python. Caso voc\u00ea seja um usu\u00e1rio avan\u00e7ado e queira usar um cliente de SSH de sua prefer\u00eancia, basta acessar o servidor por SSH e utilizar o comando que est\u00e1 em \u201c<b>Enter to the virtual environment.To enter to virtual environment, run the command:<\/b>\u201d no SSH para entrar no virtualenv e poder instalar tanto o Django quanto os m\u00f3dulos que desejar.<\/p>\n<p>\u00c9 poss\u00edvel tamb\u00e9m manipular sua conta via SSH pelo pr\u00f3prio painel de controle, utilizando a ferramenta Terminal e ser\u00e1 dessa forma que iremos mostrar nesse exemplo. O primeiro passo \u00e9 copiar o comando para entrar no virtualenv:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-182456.png\" alt=\"\" width=\"1442\" height=\"322\" \/><\/p>\n<p>Agora que o comando foi copiado, vamos abrir o terminal :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-180743.png\" alt=\"\" width=\"647\" height=\"597\" \/><\/p>\n<\/p>\n<p>\n\n\n<p class=\"wp-block-paragraph\">Ao abrir o terminal, ser\u00e1 exibido a tela lhe permitindo inserir comandos e basta colar o comando que foi copiado da tela de projetos conforme o print abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-182602.png\" alt=\"\" width=\"1365\" height=\"574\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Quando teclar enter no final da linha desse comando, j\u00e1 estar\u00e1 no virtualenv e ir\u00e1 reparar que o nome do projeto e a vers\u00e3o do python estar\u00e3o logo no inicio da linha:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-182747.png\" alt=\"\" width=\"1348\" height=\"570\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">No print acima, temos tamb\u00e9m um exemplo de uso do comando &#8220;pwd&#8221; que exibe na tela o diret\u00f3rio que est\u00e1 visualizando no momento. Pode perceber que j\u00e1 est\u00e1 no diret\u00f3rio do seu projeto. O comando &#8220;ls&#8221; exibido acima mostra o conte\u00fado gerado automaticamente pelo cPanel.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O pr\u00f3ximo passo \u00e9 a instala\u00e7\u00e3o do django usando o comando &#8220;pip install django&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-182832.png\" alt=\"\" width=\"1362\" height=\"591\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Criar_um_projeto\"><\/span>Criar um projeto<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Agora que temos uma aplica\u00e7\u00e3o Python instalada com o Django, precisamos criar um projeto. Para isso, vamos usar o comando &#8220;django-admin startproject meuapp .&#8221; Segue print de exemplo:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Observa\u00e7\u00e3o importante: No final do comando &#8220;django-admin startproject meuapp .&#8221; h\u00e1 um ponto no final, que significa que o projeto ser\u00e1 instalado no diret\u00f3rio atual. Sem o ponto, ser\u00e1 criado um subdiret\u00f3rio extra que pode gerar confus\u00e3o.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-182920.png\" alt=\"\" width=\"1375\" height=\"609\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos ver agora&nbsp; os novos arquivos e diret\u00f3rios criados pelo comando:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183013.png\" alt=\"\" width=\"1368\" height=\"591\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos ver todos os arquivos e diret\u00f3rios criados pelo django-admin. O pr\u00f3ximo passo agora \u00e9 atualizar o arquivo de inicializa\u00e7\u00e3o da aplica\u00e7\u00e3o para o wsgi.py do django. Para isso, devemos voltar na tela de projetos do cpanel e editar o nosso projeto:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-195320.png\" alt=\"\" width=\"1375\" height=\"451\">Devemos agora ajustar o arquivo de inicializa\u00e7\u00e3o, inserindo o caminho do wsgi.py do projeto django:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183431.png\" alt=\"\" width=\"1393\" height=\"823\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A partir desse momento o site django j\u00e1 dever\u00e1 estar online. Para um teste, basta acessar o site em outra aba do navegador:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183514.png\" alt=\"\" width=\"1203\" height=\"605\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Quando acessar o site, ir\u00e1 ver a tela do print acima. Essa tela informa que n\u00e3o h\u00e1 um host configurado com permiss\u00e3o para esse aplicativo. Para corrigir essa configura\u00e7\u00e3o, dever\u00e1 acessar o gerenciador de arquivos do cPanel e editar o arquivo settings.py do seu projeto:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-200653.png\" alt=\"\" width=\"763\" height=\"595\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183623.png\" alt=\"\" width=\"511\" height=\"354\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ao clicar no bot\u00e3o &#8220;Edit&#8221; ser\u00e1 exibido o conte\u00fado do arquivo settings.py e dever\u00e1 localizar a linha do ALLOWED_HOSTS e ir\u00e1 reparar que ela est\u00e1 sem conte\u00fado:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183743.png\" alt=\"\" width=\"1221\" height=\"787\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Basta inserir o nome de seu site nessa parte com e sem www seguindo o modelo abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ALLOWED_HOSTS = ['siteexemplo.h-br.com','www.siteexemplo.h-br.com']<\/pre>\n\n\n\n<div style=\"border:1px solid #f0d9a8; border-left:4px solid #e0a800; background:#fffaf0; border-radius:8px; padding:18px 22px; margin:24px 0; font-family:Arial, Helvetica, sans-serif;\">\n<div style=\"font-weight:700; color:#8a6d00; margin-bottom:6px; text-transform:uppercase; letter-spacing:.05em; font-size:14px;\">&#x26a0;&#xfe0f; Antes de colocar em produ\u00e7\u00e3o: DEBUG = False<\/div>\n<p style=\"color:#8a6d00; line-height:1.65; margin:0 0 10px;\">No mesmo arquivo <code>settings.py<\/code>, localize a linha <code>DEBUG = True<\/code> e troque por <code>False<\/code>. Com o DEBUG ligado, qualquer erro no site exibe ao visitante o caminho completo dos seus arquivos, as vari\u00e1veis de ambiente, a configura\u00e7\u00e3o do banco de dados e parte da SECRET_KEY.<\/p>\n<p style=\"color:#8a6d00; line-height:1.65; margin:0;\">\u00c9 a falha de seguran\u00e7a mais comum em projetos Django publicados. Durante o desenvolvimento o DEBUG ajuda; em produ\u00e7\u00e3o, n\u00e3o.<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183825.png\" alt=\"\" width=\"1715\" height=\"756\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ao final da edi\u00e7\u00e3o dever\u00e1 clicar no bot\u00e3o &#8220;Salvar altera\u00e7\u00f5es&#8221; no canto superior direito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Volte no cpanel na tela de seu aplicativo e de restart na aplica\u00e7\u00e3o para que as atualiza\u00e7\u00f5es sejam aplicadas.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-201539.png\" alt=\"\" width=\"1372\" height=\"466\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agora basta testar o acesso em seu site. Estando tudo correto, ele dever\u00e1 exibir a tela de demonstra\u00e7\u00e3o do django como o print abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-183958.png\" alt=\"\" width=\"1105\" height=\"521\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agora devemos configurar o caminho dos arquivos est\u00e1ticos de seu projeto. Para isso, volte no gerenciador de arquivos. O diret\u00f3rio publico de sua conta \u00e9 o public_html. Nesse exemplo, iremos criar um diret\u00f3rio dentro dele de nome &#8220;static&#8221; conforme os print&#8217;s abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184126.png\" alt=\"\" width=\"1092\" height=\"511\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-202234.png\" alt=\"\" width=\"533\" height=\"286\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agora devemos configurar o caminho no arquivo de configura\u00e7\u00e3o, para isso, edite novamente o arquivo settings.py:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-200653.png\" alt=\"\" width=\"763\" height=\"595\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dever\u00e1 ir at\u00e9 o final do arquivos e inserir a seguinte linha:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">STATIC_ROOT = '\/home\/siteexem\/public_html\/static'<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184504.png\" alt=\"\" width=\"1474\" height=\"896\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observa\u00e7\u00e3o importante: Nesse exemplo estamos usando o caminho de nossa conta de teste. Em seu caso precisar\u00e1 definir o caminho correto de sua conta no servidor.&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que inserir a linha, clique em salvar altera\u00e7\u00f5es. A pr\u00f3xima etapa \u00e9 rodar o comando para coletar a&nbsp; nova configura\u00e7\u00e3o de caminho dos arquivos est\u00e1ticos. Esse procedimento deve ser feito via terminal:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184606.png\" alt=\"\" width=\"1305\" height=\"577\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agora o pr\u00f3ximo passo \u00e9 testar. Volte no gerenciador de arquivos, entre no diret\u00f3rio public_html\/static e crie um arquivo teste conforme o print abaixo:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184742.png\" alt=\"\" width=\"815\" height=\"500\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184758.png\" alt=\"\" width=\"535\" height=\"273\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que criar o arquivo dentro da pasta static, vamos edita-lo e inserir um conte\u00fado:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184823.png\" alt=\"\" width=\"836\" height=\"535\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-184835.png\" alt=\"\" width=\"553\" height=\"376\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-185112.png\" alt=\"\" width=\"1473\" height=\"343\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Depois que inserir o texto, clique no bot\u00e3o &#8220;salvar altera\u00e7\u00f5es&#8221; e fa\u00e7a um teste de acesso via navegador. Em nosso exemplo o link ficou da seguinte forma:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/08\/ksnip_20230821-185206.png\" alt=\"\" width=\"419\" height=\"125\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E Voila! Seu projeto j\u00e1 est\u00e1 pronto para receber seu conte\u00fado!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Perguntas_frequentes\"><\/span>Perguntas frequentes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preciso de VPS para hospedar Django?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o necessariamente. Uma hospedagem compartilhada com cPanel e Setup Python App \u2014 como a usada neste tutorial \u2014 roda Django perfeitamente para sites institucionais, blogs, pain\u00e9is internos e aplica\u00e7\u00f5es de tr\u00e1fego moderado. O VPS passa a fazer sentido quando voc\u00ea precisa de acesso root, de bibliotecas que exigem compila\u00e7\u00e3o, de Celery com workers em background, ou quando o tr\u00e1fego come\u00e7a a esbarrar nos limites do plano.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Qual vers\u00e3o do Python e do Django devo escolher?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use a vers\u00e3o mais recente do Python dispon\u00edvel no painel e uma vers\u00e3o <strong>LTS<\/strong> do Django. As LTS recebem corre\u00e7\u00f5es de seguran\u00e7a por tr\u00eas anos, o que evita ter que migrar o projeto no meio do caminho. Vers\u00f5es intermedi\u00e1rias trazem recursos novos mas t\u00eam ciclo de suporte curto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Por que meu site Django mostra &#8220;DisallowedHost&#8221;?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Porque o dom\u00ednio que voc\u00ea acessou n\u00e3o est\u00e1 na lista <code>ALLOWED_HOSTS<\/code> do <code>settings.py<\/code>. \u00c9 uma prote\u00e7\u00e3o do pr\u00f3prio Django contra ataques de cabe\u00e7alho Host. Acrescente seu dom\u00ednio com e sem <code>www<\/code>, salve, e reinicie a aplica\u00e7\u00e3o no painel \u2014 o rein\u00edcio \u00e9 a parte que muita gente esquece.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preciso reiniciar a aplica\u00e7\u00e3o depois de cada altera\u00e7\u00e3o?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sim, para mudan\u00e7as em arquivos Python \u2014 <code>settings.py<\/code>, <code>views.py<\/code>, <code>models.py<\/code>. O Passenger mant\u00e9m o processo em mem\u00f3ria, ent\u00e3o a altera\u00e7\u00e3o s\u00f3 passa a valer depois do restart, feito pelo bot\u00e3o na tela da aplica\u00e7\u00e3o no cPanel. Altera\u00e7\u00f5es em templates HTML e arquivos est\u00e1ticos n\u00e3o precisam.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Meus arquivos CSS e JavaScript n\u00e3o carregam. O que fazer?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Provavelmente falta rodar o <code>collectstatic<\/code>. O Django n\u00e3o serve arquivos est\u00e1ticos em produ\u00e7\u00e3o \u2014 ele espera que estejam reunidos numa pasta p\u00fablica, definida no <code>STATIC_ROOT<\/code>. Depois de configurar o caminho, rode <code>python manage.py collectstatic<\/code> pelo terminal e reinicie a aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>O que \u00e9 o ponto no final do comando <code>django-admin startproject meuapp .<\/code>?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ele indica que o projeto deve ser criado no diret\u00f3rio atual. Sem o ponto, o Django cria uma pasta extra com o mesmo nome, resultando em <code>meuapp\/meuapp\/<\/code> \u2014 o que funciona, mas confunde os caminhos e \u00e9 a causa mais comum de erro no <code>Application startup file<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preciso mudar o DEBUG para False?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sim, antes de o site ficar p\u00fablico. Com <code>DEBUG = True<\/code>, qualquer erro exibe ao visitante o caminho completo dos seus arquivos, as vari\u00e1veis de ambiente, a configura\u00e7\u00e3o do banco e parte da SECRET_KEY. \u00c9 a falha de seguran\u00e7a mais comum em projetos Django publicados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Posso usar banco de dados MySQL em vez do SQLite?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sim, e para produ\u00e7\u00e3o \u00e9 o recomendado. O SQLite vem configurado por padr\u00e3o e funciona para testes, mas grava num arquivo \u00fanico e n\u00e3o lida bem com escritas simult\u00e2neas. Crie um banco MySQL no cPanel, instale o <code>mysqlclient<\/code> no virtualenv, e aponte o <code>DATABASES<\/code> do <code>settings.py<\/code> para ele.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Como instalo bibliotecas adicionais no projeto?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pelo terminal, dentro do virtualenv. Entre no ambiente com o comando que o painel fornece e use <code>pip install nome-da-biblioteca<\/code>. Instalar fora do virtualenv n\u00e3o funciona \u2014 a aplica\u00e7\u00e3o n\u00e3o v\u00ea o pacote. Vale tamb\u00e9m manter um <code>requirements.txt<\/code> no projeto, com <code>pip freeze &gt; requirements.txt<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Onde vejo os erros da minha aplica\u00e7\u00e3o?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No arquivo de log do Passenger, cujo caminho voc\u00ea definiu ao criar a aplica\u00e7\u00e3o \u2014 no exemplo deste tutorial, o diret\u00f3rio <code>logs<\/code>. \u00c9 o primeiro lugar a olhar quando o site retorna erro 500 e nenhuma mensagem aparece na tela, o que \u00e9 justamente o comportamento esperado com <code>DEBUG = False<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Posso rodar mais de uma aplica\u00e7\u00e3o Python na mesma conta?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sim. Cada aplica\u00e7\u00e3o criada no Setup Python App tem seu pr\u00f3prio virtualenv e sua pr\u00f3pria vers\u00e3o do Python, e pode responder num dom\u00ednio ou subdom\u00ednio diferente. O limite pr\u00e1tico \u00e9 o de recursos do plano, n\u00e3o do painel.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n{\n\"@context\": \"https:\/\/schema.org\",\n\"@type\": \"FAQPage\",\n\"mainEntity\": [\n{\"@type\":\"Question\",\"name\":\"Preciso de VPS para hospedar Django?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"N\u00e3o necessariamente. Uma hospedagem compartilhada com cPanel e Setup Python App roda Django perfeitamente para sites institucionais, blogs, pain\u00e9is internos e aplica\u00e7\u00f5es de tr\u00e1fego moderado. O VPS passa a fazer sentido quando voc\u00ea precisa de acesso root, de bibliotecas que exigem compila\u00e7\u00e3o, de workers em background, ou quando o tr\u00e1fego come\u00e7a a esbarrar nos limites do plano.\"}},\n{\"@type\":\"Question\",\"name\":\"Qual vers\u00e3o do Python e do Django devo escolher?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use a vers\u00e3o mais recente do Python dispon\u00edvel no painel e uma vers\u00e3o LTS do Django. As LTS recebem corre\u00e7\u00f5es de seguran\u00e7a por tr\u00eas anos, o que evita ter que migrar o projeto no meio do caminho. Vers\u00f5es intermedi\u00e1rias trazem recursos novos mas t\u00eam ciclo de suporte curto.\"}},\n{\"@type\":\"Question\",\"name\":\"Por que meu site Django mostra DisallowedHost?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Porque o dom\u00ednio que voc\u00ea acessou n\u00e3o est\u00e1 na lista ALLOWED_HOSTS do settings.py. \u00c9 uma prote\u00e7\u00e3o do pr\u00f3prio Django contra ataques de cabe\u00e7alho Host. Acrescente seu dom\u00ednio com e sem www, salve, e reinicie a aplica\u00e7\u00e3o no painel, sendo o rein\u00edcio a parte que muita gente esquece.\"}},\n{\"@type\":\"Question\",\"name\":\"Preciso reiniciar a aplica\u00e7\u00e3o depois de cada altera\u00e7\u00e3o?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim, para mudan\u00e7as em arquivos Python como settings.py, views.py e models.py. O Passenger mant\u00e9m o processo em mem\u00f3ria, ent\u00e3o a altera\u00e7\u00e3o s\u00f3 passa a valer depois do restart, feito pelo bot\u00e3o na tela da aplica\u00e7\u00e3o no cPanel. Altera\u00e7\u00f5es em templates HTML e arquivos est\u00e1ticos n\u00e3o precisam.\"}},\n{\"@type\":\"Question\",\"name\":\"Meus arquivos CSS e JavaScript n\u00e3o carregam. O que fazer?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Provavelmente falta rodar o collectstatic. O Django n\u00e3o serve arquivos est\u00e1ticos em produ\u00e7\u00e3o: ele espera que estejam reunidos numa pasta p\u00fablica, definida no STATIC_ROOT. Depois de configurar o caminho, rode python manage.py collectstatic pelo terminal e reinicie a aplica\u00e7\u00e3o.\"}},\n{\"@type\":\"Question\",\"name\":\"O que \u00e9 o ponto no final do comando django-admin startproject?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Ele indica que o projeto deve ser criado no diret\u00f3rio atual. Sem o ponto, o Django cria uma pasta extra com o mesmo nome, o que funciona mas confunde os caminhos e \u00e9 a causa mais comum de erro no arquivo de inicializa\u00e7\u00e3o da aplica\u00e7\u00e3o.\"}},\n{\"@type\":\"Question\",\"name\":\"Preciso mudar o DEBUG para False?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim, antes de o site ficar p\u00fablico. Com DEBUG igual a True, qualquer erro exibe ao visitante o caminho completo dos seus arquivos, as vari\u00e1veis de ambiente, a configura\u00e7\u00e3o do banco e parte da SECRET_KEY. \u00c9 a falha de seguran\u00e7a mais comum em projetos Django publicados.\"}},\n{\"@type\":\"Question\",\"name\":\"Posso usar banco de dados MySQL em vez do SQLite?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim, e para produ\u00e7\u00e3o \u00e9 o recomendado. O SQLite vem configurado por padr\u00e3o e funciona para testes, mas grava num arquivo \u00fanico e n\u00e3o lida bem com escritas simult\u00e2neas. Crie um banco MySQL no cPanel, instale o mysqlclient no virtualenv, e aponte o DATABASES do settings.py para ele.\"}},\n{\"@type\":\"Question\",\"name\":\"Como instalo bibliotecas adicionais no projeto?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Pelo terminal, dentro do virtualenv. Entre no ambiente com o comando que o painel fornece e use pip install seguido do nome da biblioteca. Instalar fora do virtualenv n\u00e3o funciona, porque a aplica\u00e7\u00e3o n\u00e3o v\u00ea o pacote. Vale tamb\u00e9m manter um arquivo requirements.txt no projeto.\"}},\n{\"@type\":\"Question\",\"name\":\"Onde vejo os erros da minha aplica\u00e7\u00e3o?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No arquivo de log do Passenger, cujo caminho voc\u00ea definiu ao criar a aplica\u00e7\u00e3o. \u00c9 o primeiro lugar a olhar quando o site retorna erro 500 e nenhuma mensagem aparece na tela, o que \u00e9 justamente o comportamento esperado com DEBUG igual a False.\"}},\n{\"@type\":\"Question\",\"name\":\"Posso rodar mais de uma aplica\u00e7\u00e3o Python na mesma conta?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sim. Cada aplica\u00e7\u00e3o criada no Setup Python App tem seu pr\u00f3prio virtualenv e sua pr\u00f3pria vers\u00e3o do Python, e pode responder num dom\u00ednio ou subdom\u00ednio diferente. O limite pr\u00e1tico \u00e9 o de recursos do plano, n\u00e3o do painel.\"}}\n]\n}\n<\/script>\n\n\n\n<div style=\"max-width:760px; margin:32px auto; background:linear-gradient(135deg,#1a73e8 0%,#0b3d91 100%); border-radius:16px; padding:32px 28px; font-family:Arial, Helvetica, sans-serif; color:#fff; box-shadow:0 10px 30px rgba(26,115,232,.25);\">\n<div style=\"display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap;\">\n<div style=\"flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:12px; background:rgba(255,255,255,.18);\">\n<svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"16 18 22 12 16 6\"><\/polyline><polyline points=\"8 6 2 12 8 18\"><\/polyline><\/svg>\n<\/div>\n<div style=\"flex:1 1 320px; min-width:260px;\">\n<div style=\"font-weight:800; line-height:1.25; margin-bottom:8px; font-size:19px;\">Django rodando sem configurar servidor<\/div>\n<p style=\"margin:0 0 18px; line-height:1.6; color:#dbe7fb;\">O Setup Python App que voc\u00ea viu neste tutorial vem em todos os planos da Homehost \u2014 com virtualenv por aplica\u00e7\u00e3o, v\u00e1rias vers\u00f5es de Python dispon\u00edveis, terminal SSH pelo painel e MySQL inclu\u00eddo. Servidor no Brasil, SSL gr\u00e1tis e suporte em portugu\u00eas para quando o log do Passenger n\u00e3o ajudar.<\/p>\n<a href=\"https:\/\/www.homehost.com.br\/hospedagem-django\/\" style=\"display:inline-flex; align-items:center; gap:8px; background:#fff; color:#1a73e8; font-weight:700; text-decoration:none; padding:13px 26px; border-radius:10px; box-shadow:0 4px 12px rgba(0,0,0,.15);\">\nVer planos de hospedagem Django\n<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1a73e8\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"><\/path><\/svg>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusao\"><\/span>Conclus\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Publicar um projeto Django numa hospedagem com cPanel \u00e9 menos trabalhoso do que a documenta\u00e7\u00e3o oficial sugere \u2014 o Setup Python App resolve o virtualenv, o Passenger cuida do WSGI, e o que resta s\u00e3o tr\u00eas ajustes no <code>settings.py<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>S\u00e3o esses tr\u00eas que fazem toda a diferen\u00e7a.<\/strong> O <code>ALLOWED_HOSTS<\/code>, sem o qual o Django recusa qualquer requisi\u00e7\u00e3o. O <code>STATIC_ROOT<\/code> com o <code>collectstatic<\/code>, sem os quais o site carrega sem estilo nenhum. E o <code>DEBUG = False<\/code>, sem o qual seu servidor exp\u00f5e os pr\u00f3prios caminhos e configura\u00e7\u00f5es a qualquer visitante que provoque um erro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dois h\u00e1bitos que poupam tempo depois:<\/strong> reinicie a aplica\u00e7\u00e3o sempre que alterar um arquivo Python, porque o Passenger mant\u00e9m o processo em mem\u00f3ria e n\u00e3o recarrega sozinho. E olhe o log do Passenger antes de qualquer outra coisa quando aparecer um erro 500 \u2014 com o DEBUG desligado, a tela n\u00e3o vai te dizer nada, e o log vai.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A partir da\u00ed o projeto \u00e9 seu. O ambiente est\u00e1 pronto, e o que vem depois \u00e9 c\u00f3digo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este tutorial mostra, passo a passo, como criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem com cPanel \u2014 da instala\u00e7\u00e3o do Python \u00e0 configura\u00e7\u00e3o dos arquivos est\u00e1ticos, com o projeto no ar ao final. Criando sua primeira aplica\u00e7\u00e3o Django Este tutorial usa o Python 3.13 e o Django 5.2 LTS como refer\u00eancia. Novas vers\u00f5es s\u00e3o habilitadas [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":1672,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_helpful_status":1,"_lmt_disableupdate":"","_lmt_disable":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[211],"tags":[],"class_list":["post-10677","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pythondjango"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026<\/title>\n<meta name=\"description\" content=\"Passo a passo para criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem cPanel: Setup Python App, virtualenv, ALLOWED_HOSTS, arquivos est\u00e1ticos e DEBUG em produ\u00e7\u00e3o.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026\" \/>\n<meta property=\"og:description\" content=\"Passo a passo para criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem cPanel: Setup Python App, virtualenv, ALLOWED_HOSTS, arquivos est\u00e1ticos e DEBUG em produ\u00e7\u00e3o.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Homehost\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Homehost\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-21T23:22:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-15T11:18:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"346\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hugo Cabral\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Homehost\" \/>\n<meta name=\"twitter:site\" content=\"@Homehost\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hugo Cabral\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/\"},\"author\":{\"name\":\"Hugo Cabral\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b2c43a89a4915b5121bd10bb10bd5234\"},\"headline\":\"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026\",\"datePublished\":\"2023-08-21T23:22:44+00:00\",\"dateModified\":\"2026-08-15T11:18:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/\"},\"wordCount\":2026,\"publisher\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/criando-sua-primeira-aplicacao-django-com-python.jpg\",\"articleSection\":[\"Python\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/\",\"url\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/\",\"name\":\"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/criando-sua-primeira-aplicacao-django-com-python.jpg\",\"datePublished\":\"2023-08-21T23:22:44+00:00\",\"dateModified\":\"2026-08-15T11:18:43+00:00\",\"description\":\"Passo a passo para criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem cPanel: Setup Python App, virtualenv, ALLOWED_HOSTS, arquivos est\u00e1ticos e DEBUG em produ\u00e7\u00e3o.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/criando-sua-primeira-aplicacao-django-com-python.jpg\",\"contentUrl\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/criando-sua-primeira-aplicacao-django-com-python.jpg\",\"width\":600,\"height\":346},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/pythondjango\\\/criando-primeira-aplicacao-django-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/\",\"name\":\"Homehost\",\"description\":\"Hospedagem De Sites\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#organization\",\"name\":\"Homehost\",\"url\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/logo-detalhes.png\",\"contentUrl\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/logo-detalhes.png\",\"width\":150,\"height\":48,\"caption\":\"Homehost\"},\"image\":{\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Homehost\\\/\",\"https:\\\/\\\/x.com\\\/Homehost\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.homehost.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b2c43a89a4915b5121bd10bb10bd5234\",\"name\":\"Hugo Cabral\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026","description":"Passo a passo para criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem cPanel: Setup Python App, virtualenv, ALLOWED_HOSTS, arquivos est\u00e1ticos e DEBUG em produ\u00e7\u00e3o.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/","og_locale":"pt_BR","og_type":"article","og_title":"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026","og_description":"Passo a passo para criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem cPanel: Setup Python App, virtualenv, ALLOWED_HOSTS, arquivos est\u00e1ticos e DEBUG em produ\u00e7\u00e3o.","og_url":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/","og_site_name":"Homehost","article_publisher":"https:\/\/www.facebook.com\/Homehost\/","article_published_time":"2023-08-21T23:22:44+00:00","article_modified_time":"2026-08-15T11:18:43+00:00","og_image":[{"width":600,"height":346,"url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg","type":"image\/jpeg"}],"author":"Hugo Cabral","twitter_card":"summary_large_image","twitter_creator":"@Homehost","twitter_site":"@Homehost","twitter_misc":{"Escrito por":"Hugo Cabral","Est. tempo de leitura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#article","isPartOf":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/"},"author":{"name":"Hugo Cabral","@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/b2c43a89a4915b5121bd10bb10bd5234"},"headline":"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026","datePublished":"2023-08-21T23:22:44+00:00","dateModified":"2026-08-15T11:18:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/"},"wordCount":2026,"publisher":{"@id":"https:\/\/www.homehost.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg","articleSection":["Python"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/","url":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/","name":"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026","isPartOf":{"@id":"https:\/\/www.homehost.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#primaryimage"},"image":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg","datePublished":"2023-08-21T23:22:44+00:00","dateModified":"2026-08-15T11:18:43+00:00","description":"Passo a passo para criar sua primeira aplica\u00e7\u00e3o Django numa hospedagem cPanel: Setup Python App, virtualenv, ALLOWED_HOSTS, arquivos est\u00e1ticos e DEBUG em produ\u00e7\u00e3o.","breadcrumb":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#primaryimage","url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg","contentUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg","width":600,"height":346},{"@type":"BreadcrumbList","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-primeira-aplicacao-django-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.homehost.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Criando sua primeira aplica\u00e7\u00e3o Django com Python em 2026"}]},{"@type":"WebSite","@id":"https:\/\/www.homehost.com.br\/blog\/#website","url":"https:\/\/www.homehost.com.br\/blog\/","name":"Homehost","description":"Hospedagem De Sites","publisher":{"@id":"https:\/\/www.homehost.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.homehost.com.br\/blog\/#organization","name":"Homehost","url":"https:\/\/www.homehost.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2022\/10\/logo-detalhes.png","contentUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2022\/10\/logo-detalhes.png","width":150,"height":48,"caption":"Homehost"},"image":{"@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Homehost\/","https:\/\/x.com\/Homehost"]},{"@type":"Person","@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/b2c43a89a4915b5121bd10bb10bd5234","name":"Hugo Cabral"}]}},"modified_by":"ad_hmhst","jetpack_featured_media_url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2016\/11\/criando-sua-primeira-aplicacao-django-com-python.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/10677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=10677"}],"version-history":[{"count":25,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/10677\/revisions"}],"predecessor-version":[{"id":17392,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/10677\/revisions\/17392"}],"wp:attachment":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=10677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=10677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=10677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}