<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renato Lelis</title>
    <description>The latest articles on DEV Community by Renato Lelis (@rjlelis).</description>
    <link>https://dev.to/rjlelis</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F306586%2F59482072-1d92-4eb8-a296-d6de08a7a1bb.jpeg</url>
      <title>DEV Community: Renato Lelis</title>
      <link>https://dev.to/rjlelis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rjlelis"/>
    <language>en</language>
    <item>
      <title>O uso de namespace no Django</title>
      <dc:creator>Renato Lelis</dc:creator>
      <pubDate>Thu, 02 Jan 2020 18:43:55 +0000</pubDate>
      <link>https://dev.to/rjlelis/o-uso-de-namespace-no-django-13fh</link>
      <guid>https://dev.to/rjlelis/o-uso-de-namespace-no-django-13fh</guid>
      <description>&lt;p&gt;Segundo o &lt;a href="https://pythonacademy.com.br/zen-of-python"&gt;Zen Of Python&lt;/a&gt;, namespace são uma ótima ideia e no Django elas estão presentes e eu diria que são essenciais para ter um código fácil de ler e de manter.&lt;/p&gt;

&lt;p&gt;No Django, os namespace estão presentes na nomeação das urls (exato, dá para colocar nomes às urls) e na estrutura de pastas dos &lt;code&gt;templates&lt;/code&gt; e recursos estáticos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nas urls
&lt;/h2&gt;

&lt;p&gt;Nas urls, o uso de namespace aparece em dois momentos. Quando se dar um nome a uma função que está sendo roteada e quando o arquivo de urls pai está direcionando as requisições para um arquivo de urls filho.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Aqui, quando uma requisição for direcionada à rota &lt;code&gt;'https://&amp;lt;dominio.com&amp;gt;/usuario&lt;/code&gt;', as requisições vão ser redirecionadas para as urls do arquivo url.py no modulo usuario. O argumento namespace vai ser o nome do app para qual o as requisições irão ser redirecionadas.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;No arquivo de urls filho, deve-se criar uma variável chamada namespace, seu valor sendo o mesmo nome dado no arquivo de urls pai, e o último argumento da função &lt;code&gt;“path”&lt;/code&gt; vai ser o nome da função. Internamente, o Django vai concatenar esses dois nomes, ficando &lt;code&gt;“usuario:list”&lt;/code&gt;. Isso é útil quando você precisar redirecionar esta url. Em vez de usar &lt;code&gt;“/usuario/usuarios”&lt;/code&gt; você usar &lt;code&gt;“reverse(‘usuario:list’)”&lt;/code&gt;, mais legível e mais prático.&lt;/p&gt;

&lt;p&gt;Dentro das páginas html, as urls também podem ser referenciadas pelo namespace. Usando a tag especial &lt;code&gt;url&lt;/code&gt;, você pode converter de &lt;code&gt;namespace&lt;/code&gt; para url seguindo o mesmo princípio de legibilidade e praticidade.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Nos templates
&lt;/h2&gt;

&lt;p&gt;Nos templates, os namespaces ajudam a referenciar os arquivos html e os arquivos estáticos dentro de funções e até dentro dos próprios &lt;code&gt;templates&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ao criar um app no Django que irá conter &lt;code&gt;templates&lt;/code&gt;, o indicado é criar uma pasta chamada &lt;code&gt;“templates”&lt;/code&gt; e dentro dela criar outra pasta com o mesmo nome no app e aí sim guardar as páginas html dentro desta última pasta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f61HFGcz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lkx280ozt5w6f36c58wq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f61HFGcz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lkx280ozt5w6f36c58wq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O mesmo vale para os arquivos estáticos. Se cria uma pasta chamada static, uma com o mesmo nome da app e as pastas dos respectivos tipos de arquivos (css, imagens e javascript).&lt;/p&gt;

&lt;p&gt;No código, os &lt;code&gt;templates&lt;/code&gt; vão ser referenciados nas &lt;code&gt;views&lt;/code&gt;.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Assim como nas urls basta passar o nome do app e, separando por uma barra, o nome do arquivo html.&lt;/p&gt;

&lt;p&gt;Os arquivos estáticos vão ser referenciados dentro dos templates.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Os namespace são passados na tag &lt;code&gt;static&lt;/code&gt;, passando o caminho relativo, seguindo o exemplo dos templates. Para usar a tag &lt;code&gt;static&lt;/code&gt; é preciso carregá-la através da tag &lt;code&gt;load&lt;/code&gt;, bem na linha 1.&lt;/p&gt;

&lt;p&gt;O próximo programador que irá dar manutenção ao seu código agradece&lt;/p&gt;

&lt;p&gt;Vimos nesse artigo o quanto namespaces nos ajudam na leitura do nosso código e facilita a manutenção.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;É importante lembrar de escrever código que outros programadores entendem, não só você.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E nisso, o Django ajuda e muito.&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
    </item>
    <item>
      <title>Entendendo a arquitetura do Django</title>
      <dc:creator>Renato Lelis</dc:creator>
      <pubDate>Thu, 02 Jan 2020 18:28:44 +0000</pubDate>
      <link>https://dev.to/rjlelis/entendendo-a-arquitetura-do-django-e0m</link>
      <guid>https://dev.to/rjlelis/entendendo-a-arquitetura-do-django-e0m</guid>
      <description>&lt;p&gt;No início do desenvolvimento de um sistema, é importante que o desenho da arquitetura esteja bem definida e que todos os desenvolvedores sigam ela a risca (bom item para o peer review). No desenho da arquitetura, é levado em consideração performance, escalabilidade e manutenção.&lt;/p&gt;

&lt;p&gt;A muitas arquitetura usadas por padrão hoje em dia e alguns frameworks são construídos para seguir elas. No caso do Django o modelo adotado é a arquitetura MTV.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NKFf79qS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kjdxjwabn8hw73iocda3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NKFf79qS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kjdxjwabn8hw73iocda3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dividida em três camadas, a arquitetura MTV consiste na camada &lt;code&gt;Model&lt;/code&gt;, &lt;code&gt;Template&lt;/code&gt; e da camada &lt;code&gt;View&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A camada &lt;code&gt;Model&lt;/code&gt; é responsável pela interface com o banco de dados. É onde o Django fornece sua ORM para a modelagem de dados.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h4&gt;
  
  
  Obs: O Django já fornece uma tabela padrão de usuários, o código acima é só um exemplo da ORM.
&lt;/h4&gt;

&lt;p&gt;O &lt;code&gt;Model&lt;/code&gt; vai servir como base da aplicação, onde vai ser extraído e persistido informação da aplicação, fazendo conexão (mas não necessariamente) com a camada &lt;code&gt;View&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A próxima camada é a de Template. Nela é onde os dados vão ser apresentados no browser. Esta camada consiste basicamente de arquivos .html com algumas funcionalidades que o Django fornece para apresentar os dados vindos da camada View. Essas funcionalidades são expressões, envolvidas em chaves.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Existem três tipos de expressões. A primeira delas é o &lt;code&gt;{% %}&lt;/code&gt;, que permite executar comandos do python, como o for eachs e o ifs, e outras funcionalidades do próprio sistema de templates do Django.&lt;/p&gt;

&lt;p&gt;A outra expressão é o &lt;code&gt;{{ }}&lt;/code&gt;, ele é usado para acessar variáveis e mostrá-las na tela. Simples assim.&lt;/p&gt;

&lt;p&gt;E a última expressão é uma variação da anterior, que é simplesmente um filtro representado pelo pipe. No exemplo mostrado é aplicado um filtro de data na variável &lt;code&gt;usuario.data_de_nascimento&lt;/code&gt;. Há diversos filtros disponíveis, você pode conferir mais delas &lt;a href="https://docs.djangoproject.com/pt-br/3.0/ref/templates/builtins/"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;E por fim vem a camada de View. Nela é onde as informações dos templates são tratadas. Existem dois tipos de views, as baseadas em função e as baseadas em classes.&lt;/p&gt;

&lt;p&gt;As view baseadas em função(FBV) são funções normais do python, recebem um parâmetro obrigatório, o request, tem sua lógica dentro de si e retornam as informações necessárias para renderizar no template.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Nesta função é criado um dicionário context, nela irá conter as informações para ser passadas para o template. Dentro do context é feita uma consulta para retornar todos os usuários e por fim, na função render, é passado o próprio request, o template que vai ser direcionado as informações do context e o context em si.&lt;/p&gt;

&lt;p&gt;E as views baseadas em classes(CBV) são classes que o Django genericas que abstraem a lógica das FBVs.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com CBVs você sobre precisa dizer o model e o template que o Django faz a mágica.&lt;/p&gt;

&lt;p&gt;Particularmente, eu prefiro as FBVs porque dão mais liberdade para fazer as regras de negócio mas, se não for uma lógica muito complexa, uma CBVs não vai fazer mal.&lt;/p&gt;

&lt;p&gt;Nesse post, vimos a importância de uma arquitetura bem estruturada, o model de arquitetura que o Django adota e detalhamos as responsabilidades de suas camadas.&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>webdev</category>
      <category>mtv</category>
    </item>
    <item>
      <title>Flask vs Django — Rotas</title>
      <dc:creator>Renato Lelis</dc:creator>
      <pubDate>Thu, 02 Jan 2020 18:16:06 +0000</pubDate>
      <link>https://dev.to/rjlelis/flask-vs-django-rotas-3dae</link>
      <guid>https://dev.to/rjlelis/flask-vs-django-rotas-3dae</guid>
      <description>&lt;p&gt;Todo framework web (ou quase todos, não cheguei a trabalhar com todos) tem seu meio de fazer rotas entre suas função e as requisições do que vem do cliente. Nessas rotas também é possível configurar o método HTTP, onde uma rota &lt;code&gt;/user&lt;/code&gt; com o método &lt;code&gt;GET&lt;/code&gt; irá gerar um resultado diferente da rota &lt;code&gt;/user&lt;/code&gt; com o método &lt;code&gt;DELETE&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No modelo de arquitetura &lt;code&gt;REST&lt;/code&gt;, os métodos HTTP têm semântica. Nele é recomendado que o método &lt;code&gt;GET&lt;/code&gt; seja usado para consultas, o método &lt;code&gt;POST&lt;/code&gt; para inserir informações, o &lt;code&gt;PUT&lt;/code&gt; para atualizar e o &lt;code&gt;DELETE&lt;/code&gt; para deletar. O &lt;code&gt;REST&lt;/code&gt; determina outras boas práticas mas elas não vem ao caso agora.&lt;/p&gt;

&lt;p&gt;No Django, as rotas são criadas num arquivo chamado &lt;code&gt;urls.py&lt;/code&gt;, numa lista chamada &lt;code&gt;urlpatterns&lt;/code&gt;.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;p&gt;Essa lista recebe a função &lt;code&gt;path()&lt;/code&gt;, onde é passado a rota e qual a função do módulo &lt;code&gt;views.py&lt;/code&gt; irá ser chamada.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;No caso do Flask, um &lt;a href="https://pythonacademy.com.br/blog/domine-decorators-em-python"&gt;decorator&lt;/a&gt; é usado para criar as rotas.&lt;/p&gt;

&lt;p&gt;É o mesmo princípio usado no Django, cada função recebe um decorator,  &lt;code&gt;app.routes&lt;/code&gt;, onde é passado sua rota.&lt;/p&gt;

&lt;p&gt;A diferença aqui, é que o Django faz isso em arquivos separados e o Flask consegue fazer em um arquivo só (na verdade o Flask permite criar uma aplicação em um único arquivo se você quiser).&lt;/p&gt;

&lt;p&gt;Outra grande diferença é o segundo argumento no decorator do Flask. Nele nós passamos uma lista de métodos HTTP e quando essa rota for chamada, dependendo do método, uma função diferente é chamada.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;No exemplo acima, a rota é a mesma mas os métodos são diferentes, separando as funções que vão ser chamadas.&lt;/p&gt;

&lt;p&gt;No Django, a diferenciação de métodos HTTP deve ser feita dentro da função chamada pela rota.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Com isso, sempre que houver a necessidade de alteração em alguma lógica de inserção ou de busca, a alteração vai acontecer em uma única função. Isso deixa a manutenção do código mais engessada.&lt;/p&gt;

&lt;p&gt;Enquanto o Flask oferece mais flexibilidade e simplicidade nas rotas, o Django oferece mais velocidade na prototipagem (class based views for the win!) e uma arquitetura bem definida, embora obrigue o desenvolvedor a usar suas convenções.&lt;/p&gt;

</description>
      <category>python</category>
      <category>flask</category>
      <category>webdev</category>
      <category>django</category>
    </item>
    <item>
      <title>Conectando o PostgreSQL com Django no Ubuntu</title>
      <dc:creator>Renato Lelis</dc:creator>
      <pubDate>Thu, 02 Jan 2020 17:53:35 +0000</pubDate>
      <link>https://dev.to/rjlelis/conectando-o-postgresql-com-django-no-ubuntu-5f7c</link>
      <guid>https://dev.to/rjlelis/conectando-o-postgresql-com-django-no-ubuntu-5f7c</guid>
      <description>&lt;p&gt;Fazer a conexão entre o django e o Postgres não é uma tarefa difícil mas se tratando de Linux, você vai precisar digitar algumas linhas de comando para fazer a instalação desse SGBD.&lt;br&gt;
Instalando o PostgreSQL&lt;/p&gt;

&lt;p&gt;Para começar, você precisa adicionar o repositório apt do Postgres ao seu sistema. Comece importando a chave GPG para os pacotes do Postgres com os seguintes comandos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;wget ca-certificateswget — quiet &lt;span class="nt"&gt;-0&lt;/span&gt; — https://postgresql.org/media/keys/ACCC4CF8.asc | &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-key add -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora adicione o repositorio no seu sistema&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; ‘echo “deb http://apt.postgresql.org/pub/repos/apt/ &lt;span class="sb"&gt;`&lt;/span&gt;lsb_release &lt;span class="nt"&gt;-cs&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="nt"&gt;-pgdg&lt;/span&gt; main” &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /etc/apt/sources.list.d/pgdg.list’
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sim eu sei, são comandos muito grandes, então não tenha vergonha e copie e cole no seu terminal ;).&lt;/p&gt;

&lt;p&gt;Agora para finalmente instalar o Postgres, digite (ou copie) os seguintes comandos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get updatesudo apt-get &lt;span class="nb"&gt;install &lt;/span&gt;postgresql postgresql-contrib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E pronto, depois disso o Postgres já deve estar instalado na sua maquina.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando o banco de dados
&lt;/h2&gt;

&lt;p&gt;Para criar um banco de dados dentro do Postgres, primeiro conecte-se ao Postgres:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;su — postgrespsql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Crie um usuário e senha para seu banco:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;USER&lt;/span&gt; &lt;span class="s1"&gt;'root'&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;PASSWORD&lt;/span&gt; &lt;span class="s1"&gt;'root'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Substitua o nome e senha root para qual você desejar.&lt;/p&gt;

&lt;p&gt;Não se esqueça de colocar o ponto-e-vírgula no final de todo comando que digitar.&lt;/p&gt;

&lt;p&gt;Agora crie o banco em si:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;django_postegres&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;OWNER&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando vai criar o banco de dados e vai dar permissões para o usuário que você criou no passo anterior.&lt;/p&gt;

&lt;p&gt;Digite &lt;code&gt;\q&lt;/code&gt; e em seguida &lt;code&gt;exit&lt;/code&gt; para sair do postgres&lt;/p&gt;

&lt;h2&gt;
  
  
  Conectando com o Django
&lt;/h2&gt;

&lt;p&gt;Com o Postgres instalado e com as informações de usuário, senha e banco de dados, basta instalar o pacote do postgres via pip.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;psycopg2-binary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora vá no settings.py do seu projeto django para editar o dicionário &lt;code&gt;DATABASES&lt;/code&gt;. Antes assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;DATABASES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;   
    &lt;span class="s"&gt;'default'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;        
    &lt;span class="s"&gt;'ENGINE'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'django.db.backends.sqlite3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s"&gt;'NAME'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BASE_DIR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'db.sqlite3'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;DATABASES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s"&gt;'default'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="s"&gt;'ENGINE'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'django.db.backends.postgresql_psycopg2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="s"&gt;'NAME'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'django_postgres'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="s"&gt;'USER'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'root'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="s"&gt;'PASSWORD'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'root'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="s"&gt;'HOST'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'localhost'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="s"&gt;'PORT'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5432&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;code&gt;ENGINE&lt;/code&gt; indica qual driver vai ser usado para conectar com o banco de dados. No nosso caso vai ser o que veio com o &lt;code&gt;psycopg2&lt;/code&gt;. O &lt;code&gt;NAME&lt;/code&gt; vai ser o nome do banco de dados que foi criado. O &lt;code&gt;USER&lt;/code&gt; vai ser o nome do usuário com permissões sobre nosso banco. O &lt;code&gt;PASSWORD&lt;/code&gt; é a senha do usuário. O &lt;code&gt;HOST&lt;/code&gt; é onde o banco está hospedado, no nosso caso está local, então será o localhost. E o &lt;code&gt;PORT&lt;/code&gt; será a padrão do Postgres, a 5432.&lt;br&gt;
Migrações&lt;/p&gt;

&lt;p&gt;Depois disso tudo basta criar e aplicar suas migrações:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py makemigrations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Deu para ver que esse processo não é dificil, só um pouco trabalhoso por causa dos comandos longos do linux mas nada que não se possa pegar prática.&lt;/p&gt;

&lt;p&gt;Referências:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tecadmin.net/install-postgresql-server-on-ubuntu/"&gt;https://tecadmin.net/install-postgresql-server-on-ubuntu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@lucas_souto/integrando-django-com-postgresql-58b3520ddf6e"&gt;https://medium.com/@lucas_souto/integrando-django-com-postgresql-58b3520ddf6e&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>postgres</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
