<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Web on Python Brasil — Aprenda Python em Português</title>
    <link>https://python.dev.br/tags/web/</link>
    <description>Recent content in Web on Python Brasil — Aprenda Python em Português</description>
    <generator>Hugo</generator>
    <language>pt-br</language>
    <lastBuildDate>Wed, 20 May 2026 10:33:48 +0000</lastBuildDate>
    <atom:link href="https://python.dev.br/tags/web/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Playwright com Python: testes end-to-end modernos</title>
      <link>https://python.dev.br/guias/playwright-python-testes-e2e/</link>
      <pubDate>Wed, 20 May 2026 07:00:00 -0300</pubDate>
      <guid>https://python.dev.br/guias/playwright-python-testes-e2e/</guid>
      <description>&lt;p&gt;Playwright virou uma das ferramentas mais fortes para testar aplicações web modernas com Python. Ele controla navegadores reais, espera elementos de forma inteligente, captura screenshots e traces, roda em CI e reduz bastante a fragilidade típica de testes end-to-end escritos com esperas fixas.&lt;/p&gt;&#xA;&lt;p&gt;Se você já usa &lt;a href=&#34;https://python.dev.br/glossario/pytest/&#34;&gt;pytest&lt;/a&gt; para testes unitários e de integração, o próximo passo natural é validar fluxos completos: login, cadastro, checkout, busca, formulários, permissões e páginas que dependem de JavaScript. Este guia mostra como começar com Playwright em Python sem transformar sua suíte em um bloco lento e instável.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django 6.0: Tarefas em Background, CSP e Mais</title>
      <link>https://python.dev.br/blog/django-6-novidades-tarefas-background/</link>
      <pubDate>Wed, 29 Apr 2026 08:00:00 -0300</pubDate>
      <guid>https://python.dev.br/blog/django-6-novidades-tarefas-background/</guid>
      <description>&lt;p&gt;O Django 6.0, lançado em dezembro de 2025, trouxe mudanças que desenvolvedores Python pediam há anos. O destaque absoluto é o &lt;strong&gt;framework nativo de tarefas em background&lt;/strong&gt; — algo que antes exigia bibliotecas externas como Celery. Além disso, o suporte embutido a &lt;strong&gt;Content Security Policy (CSP)&lt;/strong&gt;, os &lt;strong&gt;template partials&lt;/strong&gt; e a adoção da API moderna de email tornam essa a atualização mais significativa do Django em muito tempo.&lt;/p&gt;&#xA;&lt;p&gt;Neste artigo, você vai entender cada novidade com exemplos práticos e ver como migrar seus projetos. Se você ainda está decidindo entre frameworks, veja nosso &lt;a href=&#34;https://python.dev.br/blog/django-vs-flask/&#34;&gt;comparativo Django vs Flask&lt;/a&gt; para entender onde cada um brilha.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python vs Ruby: Comparativo Completo | Python Brasil</title>
      <link>https://python.dev.br/comparacoes/python-vs-ruby/</link>
      <pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/comparacoes/python-vs-ruby/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt; e &lt;strong&gt;Ruby&lt;/strong&gt; são duas linguagens dinâmicas criadas na mesma época, ambas focadas em produtividade e felicidade do programador. A rivalidade Django vs Rails marcou uma geração inteira de desenvolvedores web. Mas em 2026, as duas linguagens seguiram caminhos bem diferentes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;tabela-comparativa&#34;&gt;Tabela Comparativa&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Aspecto&lt;/th&gt;&#xA;          &lt;th&gt;Python&lt;/th&gt;&#xA;          &lt;th&gt;Ruby&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Criada em&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1991 (Guido van Rossum)&lt;/td&gt;&#xA;          &lt;td&gt;1995 (Yukihiro &amp;ldquo;Matz&amp;rdquo; Matsumoto)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Filosofia&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&amp;ldquo;Uma maneira óbvia de fazer&amp;rdquo;&lt;/td&gt;&#xA;          &lt;td&gt;&amp;ldquo;Múltiplas maneiras de fazer&amp;rdquo;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Tipagem&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Dinâmica, forte&lt;/td&gt;&#xA;          &lt;td&gt;Dinâmica, forte&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Paradigma&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Multiparadigma&lt;/td&gt;&#xA;          &lt;td&gt;Orientada a objetos pura&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Moderada&lt;/td&gt;&#xA;          &lt;td&gt;Moderada (Ruby 3.x com YJIT melhorou)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Framework web principal&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Django, FastAPI&lt;/td&gt;&#xA;          &lt;td&gt;Ruby on Rails&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Uso principal&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Data science, IA, backend, automação&lt;/td&gt;&#xA;          &lt;td&gt;Web apps, startups, DevOps&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Gerenciador de pacotes&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;pip, uv, Poetry&lt;/td&gt;&#xA;          &lt;td&gt;gem, Bundler&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Comunidade no Brasil&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Grande e crescendo&lt;/td&gt;&#xA;          &lt;td&gt;Pequena mas apaixonada&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;strong&gt;Metaprogramação&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Possível mas não incentivada&lt;/td&gt;&#xA;          &lt;td&gt;Central na linguagem&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;sintaxe-explícito-vs-elegante&#34;&gt;Sintaxe: Explícito vs Elegante&lt;/h2&gt;&#xA;&lt;p&gt;Python segue o princípio &amp;ldquo;explicit is better than implicit&amp;rdquo;. Ruby permite mais &amp;ldquo;mágica&amp;rdquo; e prioriza que o código leia como prosa.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTPX: A Alternativa Moderna ao Requests em Python</title>
      <link>https://python.dev.br/blog/python-httpx-requests-moderno/</link>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/python-httpx-requests-moderno/</guid>
      <description>&lt;p&gt;O &lt;code&gt;requests&lt;/code&gt; é a biblioteca HTTP mais popular do Python — simples, elegante e presente em praticamente todo projeto. Mas ela tem limitações: &lt;strong&gt;não suporta async nativamente&lt;/strong&gt; e &lt;strong&gt;não fala HTTP/2&lt;/strong&gt;. O &lt;strong&gt;HTTPX&lt;/strong&gt; resolve essas duas questões mantendo uma API quase idêntica ao &lt;code&gt;requests&lt;/code&gt;, tornando a migração natural.&lt;/p&gt;&#xA;&lt;p&gt;Neste artigo, vamos explorar o HTTPX em detalhes: instalação, uso básico e avançado, async, HTTP/2 e um guia prático de migração.&lt;/p&gt;&#xA;&lt;h2 id=&#34;por-que-httpx&#34;&gt;Por Que HTTPX?&lt;/h2&gt;&#xA;&lt;p&gt;O HTTPX foi criado como um &amp;ldquo;requests para a era moderna&amp;rdquo; do Python. Veja os principais diferenciais:&lt;/p&gt;</description>
    </item>
    <item>
      <title>APIs REST com FastAPI: Tutorial Completo</title>
      <link>https://python.dev.br/blog/apis-rest-com-fastapi/</link>
      <pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/apis-rest-com-fastapi/</guid>
      <description>&lt;p&gt;FastAPI é o framework Python que mais cresce para criação de APIs. Ele combina &lt;strong&gt;alta performance&lt;/strong&gt;, &lt;strong&gt;documentação automática&lt;/strong&gt; e &lt;strong&gt;validação de dados nativa&lt;/strong&gt; — tudo isso mantendo a simplicidade que a gente espera de Python. Neste tutorial, você vai construir uma API REST completa do zero.&lt;/p&gt;&#xA;&lt;h2 id=&#34;por-que-fastapi&#34;&gt;Por que FastAPI?&lt;/h2&gt;&#xA;&lt;p&gt;Antes de colocar a mão na massa, veja por que FastAPI se destaca:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Performance&lt;/strong&gt;: Uma das mais rápidas em Python (baseado em Starlette e Uvicorn)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Documentação automática&lt;/strong&gt;: Swagger UI e ReDoc gerados automaticamente&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Validação&lt;/strong&gt;: Pydantic valida dados de entrada automaticamente&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tipagem&lt;/strong&gt;: Usa type hints do Python para definir esquemas&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Async&lt;/strong&gt;: Suporte nativo a async/await&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fácil de aprender&lt;/strong&gt;: Se você sabe Python, já sabe quase tudo&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configuração-inicial&#34;&gt;Configuração Inicial&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Instalação&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# pip install fastapi uvicorn[standard]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Para rodar o servidor:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# uvicorn main:app --reload&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;hello-world-com-fastapi&#34;&gt;Hello World com FastAPI&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;fastapi&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FastAPI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Minha API&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;API de exemplo com FastAPI&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1.0.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@app.get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;raiz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mensagem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Olá, FastAPI!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;online&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@app.get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/saudacao/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{nome}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;saudacao&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nome&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mensagem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Olá, &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nome&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;! Bem-vindo à nossa API.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Acesse &lt;code&gt;http://localhost:8000/docs&lt;/code&gt; para ver a documentação interativa automática.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seguranca em Aplicacoes Python — 2025 | Python Brasil</title>
      <link>https://python.dev.br/blog/seguranca-em-aplicacoes-python/</link>
      <pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/seguranca-em-aplicacoes-python/</guid>
      <description>&lt;p&gt;Seguranca e um aspecto critico no desenvolvimento de software, e Python nao e excecao. Aplicacoes mal protegidas podem expor dados sensiveis, permitir acesso nao autorizado e comprometer servidores inteiros. Neste guia, a gente vai explorar as vulnerabilidades mais comuns e como preveni-las em projetos Python.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sql-injection&#34;&gt;SQL Injection&lt;/h2&gt;&#xA;&lt;p&gt;SQL injection acontece quando dados do usuario sao inseridos diretamente em queries SQL. E uma das vulnerabilidades mais antigas e perigosas.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ERRADO: vulneravel a SQL injection&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;buscar_usuario_inseguro&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM usuarios WHERE nome = &amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Se o usuario digitar: &amp;#39; OR &amp;#39;1&amp;#39;=&amp;#39;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# A query vira: SELECT * FROM usuarios WHERE nome = &amp;#39;&amp;#39; OR &amp;#39;1&amp;#39;=&amp;#39;1&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# CORRETO: usando parametros&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;buscar_usuario_seguro&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT * FROM usuarios WHERE nome = &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nome_usuario&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cursor&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fetchone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Com ORMs como SQLAlchemy, a protecao ja e automatica:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django vs Flask: Qual Framework Escolher?</title>
      <link>https://python.dev.br/blog/django-vs-flask/</link>
      <pubDate>Sun, 05 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/django-vs-flask/</guid>
      <description>&lt;p&gt;Na hora de construir uma aplicação web com Python, dois nomes dominam a conversa: &lt;strong&gt;Django&lt;/strong&gt; e &lt;strong&gt;Flask&lt;/strong&gt;. Ambos são excelentes, mas servem para situações diferentes. Neste artigo, a gente vai comparar os dois frameworks de forma prática, com código e recomendações claras.&lt;/p&gt;&#xA;&lt;h2 id=&#34;visão-geral&#34;&gt;Visão Geral&lt;/h2&gt;&#xA;&lt;h3 id=&#34;django-batteries-included&#34;&gt;Django: &amp;ldquo;Batteries Included&amp;rdquo;&lt;/h3&gt;&#xA;&lt;p&gt;Django é um framework &lt;strong&gt;full-stack&lt;/strong&gt; que vem com tudo que você precisa para construir uma aplicação web robusta: ORM, sistema de templates, admin, autenticação, migrations e muito mais. A filosofia é &amp;ldquo;batteries included&amp;rdquo; — ou seja, tudo vem pronto para usar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Requests: O que É e Como Funciona | Python Brasil</title>
      <link>https://python.dev.br/glossario/requests/</link>
      <pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/glossario/requests/</guid>
      <description>&lt;h2 id=&#34;o-que-e-requests&#34;&gt;O que e Requests?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Requests&lt;/strong&gt; e a biblioteca HTTP mais popular do Python, projetada para tornar requisicoes web simples e elegantes. Com o lema &amp;ldquo;HTTP for Humans&amp;rdquo;, ela abstrai a complexidade do protocolo HTTP, oferecendo uma API intuitiva para enviar requisicoes GET, POST, PUT, DELETE e outros metodos. Requests e usada por milhoes de projetos para consumir APIs REST, fazer web scraping, automatizar interacoes com servicos web e muito mais.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
