Este documento apresenta o framework Django. Discute a história do Django, suas características e princípios, como configurar e criar projetos e aplicações no Django. O palestrante também mostra como criar modelos de dados, instalar aplicações e gerar bancos de dados no Django.
Django é um framework para desenvolvimento rápido para web, escrito em Python.
Utiliza o padrão MTV (model - template - view).
Principais caracteristicas:
Mapeamento Objeto-Relacional (ORM)
Define a modelagem de dados através de classes em Python. Com isso é possível gerar suas tabelas no banco de dados e manipulá-las sem necessidade de utilizarSQL (o que também é possivel).
Interface Administrativa
No Django é possivel gerar automaticamente uma interface para administração para os modelos criados através do ORM.
Formulários
É possível gerar formulários automaticamente através dos modelos de dados.
URLs Elegantes
No Django não há limitações para criação de URLs elegantes e de maneira simples.
- Nada elegante, difícil para o usário e ruim para buscadores: www.meusite.com.br/index.jsp?id=12&nome=ciclano
- Elegante, fácil leitura e memorização e ótimo para buscadores:
www.meusite.com.br/12/ciclano
Sistema de Templates
O Django tem uma linguagem de templates poderosa, extensível e amigável. Com ela você pode separar design, conteúdo e código em Python.
Internacionalização
Django tem total suporte para aplicações multi-idioma, deixando você especificar strings de tradução e fornecendo ganchos para funcionalidades específicas do idioma.
Sistema de Cache
O Django possui um sistema de cache que se integra ao memcached ou em outros frameworks de cache.
Sobre Python
O que é Python?
Python é uma linguagem de altíssimo nível (VHLL - Very High Level Language) com código fonte aberto.
Python é Interpretado ou compilado?
Python é executado de forma interpretada via bytecode, ou seja, escrevendo apenas uma vez o código Python podemos executá-lo em qualquer sistema operaciona
Palestra na semana global do empreendedorismo na Plug and work
https://eventioz.com.br/e/desenvolvendo-prototipos-de-startups-em-python
Esta palestra tem a proposta de apresentar a linguagem Python como solução para o desenvolvimento de protótipos e MVP para startups. Mostrar como empreendedores podem desenvolver seus próprios protótipos sem dependender da contratação de desenvolvedores profissionais e ter seu MVP funcionando em poucos dias com a ajuda de Python e seus web frameworks.
Django é um framework para desenvolvimento rápido para web, escrito em Python.
Utiliza o padrão MTV (model - template - view).
Principais caracteristicas:
Mapeamento Objeto-Relacional (ORM)
Define a modelagem de dados através de classes em Python. Com isso é possível gerar suas tabelas no banco de dados e manipulá-las sem necessidade de utilizarSQL (o que também é possivel).
Interface Administrativa
No Django é possivel gerar automaticamente uma interface para administração para os modelos criados através do ORM.
Formulários
É possível gerar formulários automaticamente através dos modelos de dados.
URLs Elegantes
No Django não há limitações para criação de URLs elegantes e de maneira simples.
- Nada elegante, difícil para o usário e ruim para buscadores: www.meusite.com.br/index.jsp?id=12&nome=ciclano
- Elegante, fácil leitura e memorização e ótimo para buscadores:
www.meusite.com.br/12/ciclano
Sistema de Templates
O Django tem uma linguagem de templates poderosa, extensível e amigável. Com ela você pode separar design, conteúdo e código em Python.
Internacionalização
Django tem total suporte para aplicações multi-idioma, deixando você especificar strings de tradução e fornecendo ganchos para funcionalidades específicas do idioma.
Sistema de Cache
O Django possui um sistema de cache que se integra ao memcached ou em outros frameworks de cache.
Sobre Python
O que é Python?
Python é uma linguagem de altíssimo nível (VHLL - Very High Level Language) com código fonte aberto.
Python é Interpretado ou compilado?
Python é executado de forma interpretada via bytecode, ou seja, escrevendo apenas uma vez o código Python podemos executá-lo em qualquer sistema operaciona
Palestra na semana global do empreendedorismo na Plug and work
https://eventioz.com.br/e/desenvolvendo-prototipos-de-startups-em-python
Esta palestra tem a proposta de apresentar a linguagem Python como solução para o desenvolvimento de protótipos e MVP para startups. Mostrar como empreendedores podem desenvolver seus próprios protótipos sem dependender da contratação de desenvolvedores profissionais e ter seu MVP funcionando em poucos dias com a ajuda de Python e seus web frameworks.
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
Apresenta algumas das principais características do Django. Mostra os conceitos por trás do framework e ilusta como o desenvolvedor consegue utilizar suas funcionalidades para produzir código mais rápido porém sem abrir mão da qualidade.
Conheça mais sobre Composer, a ferramenta que trouxe uma das maiores revoluções para o PHP. Composer vai muito além de instalação de dependências, aprenda a poupar dias e meses de trabalho e passe a ser um dev feliz focado em trazer as melhores soluções técnicas para as necessidades do negócio.
Conheça mais sobre Composer, a ferramenta que trouxe uma das maiores revoluções para o PHP. Composer vai muito além de instalação de dependências, aprenda a poupar dias e meses de trabalho e passe a ser um dev feliz focado em trazer as melhores soluções técnicas para as necessidades do negócio.
O que é software livre? Tem diferença entre software livre e open source? Como devo iniciar um projeto de software livre em PHP? Qual licença devo utilizar em meu projeto? Como garantir a qualidade do meu código?
Apresentação da Palestra sobre o Framework Django, utilizado no desenvolvimento de sites e aplicações web. Na apresentação são mostrados os recursos do Django, citando seu ORM, acesso a bancos de dados, templates, cache, views, urls e diversos outros recursos.
Qual o estado dos frameworks atualmente no PHP, assim como a situação atual da linguagem. Como você pode escolher seu framework e um comparativo entre os 4 principais frameworks do mercado.
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
Minicurso de Django 1.10 com a criação de um projeto completo em Django e conteúdos sobre:
Introdução a Python, Autenticação de usuários Django, Relacionamentos de classes do Django. Templates, etc.
"Desenvolvimento Mobile Web é desenvolver uma aplicação que seja viável o seu acesso via internet de um dispositivo móvel."
"Desenvolvimento Mobile Web é um novo conceito, pois envolve uma nova demanda de mercado, novas regras e ferramentas para o tradicional desenvolvimento web."
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
Apresenta algumas das principais características do Django. Mostra os conceitos por trás do framework e ilusta como o desenvolvedor consegue utilizar suas funcionalidades para produzir código mais rápido porém sem abrir mão da qualidade.
Conheça mais sobre Composer, a ferramenta que trouxe uma das maiores revoluções para o PHP. Composer vai muito além de instalação de dependências, aprenda a poupar dias e meses de trabalho e passe a ser um dev feliz focado em trazer as melhores soluções técnicas para as necessidades do negócio.
Conheça mais sobre Composer, a ferramenta que trouxe uma das maiores revoluções para o PHP. Composer vai muito além de instalação de dependências, aprenda a poupar dias e meses de trabalho e passe a ser um dev feliz focado em trazer as melhores soluções técnicas para as necessidades do negócio.
O que é software livre? Tem diferença entre software livre e open source? Como devo iniciar um projeto de software livre em PHP? Qual licença devo utilizar em meu projeto? Como garantir a qualidade do meu código?
Apresentação da Palestra sobre o Framework Django, utilizado no desenvolvimento de sites e aplicações web. Na apresentação são mostrados os recursos do Django, citando seu ORM, acesso a bancos de dados, templates, cache, views, urls e diversos outros recursos.
Qual o estado dos frameworks atualmente no PHP, assim como a situação atual da linguagem. Como você pode escolher seu framework e um comparativo entre os 4 principais frameworks do mercado.
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
Minicurso de Django 1.10 com a criação de um projeto completo em Django e conteúdos sobre:
Introdução a Python, Autenticação de usuários Django, Relacionamentos de classes do Django. Templates, etc.
"Desenvolvimento Mobile Web é desenvolver uma aplicação que seja viável o seu acesso via internet de um dispositivo móvel."
"Desenvolvimento Mobile Web é um novo conceito, pois envolve uma nova demanda de mercado, novas regras e ferramentas para o tradicional desenvolvimento web."
Introdução ao Desenvolvimento WEB com Ruby on RailsJulio Betta
Slides que utilizei para ministrar uma palestra sobre Desenvolvimento WEB com Ruby on Rails no IV Congresso de Iniciação Científica da Faculdade Redentor de Itaperuna / RJ.
Versão PDF aqui: https://www.dropbox.com/s/2fkwksu00chm7nu/presentation.pdf
Introdução ao Ruby on Rails. O que é e quais são suas principais características. Também explico como preparar um ambiente de desenvolvimento no Ubuntu, incluindo a configuração do gEdit e a instalação do Aptana RadRails.
Nesta palestra mostrarei as mais comuns falhas de segurança cometidas por desenvolvedores em projetos Ruby on Rails, e como as evitar.
por de Marcello Castellani no 1° RS on Rails
Introdução a Linguagem de Programação RubyDiego Rubin
Apresentação utilizada em palestra na ETEC Prof. Armando Bayeux da Silva em 2008 e na Semana de Estudos do curso de Sistemas de Informação na faculdade Asser de Rio Claro em 2009.
Palestra introdutória que visa mostrar a abrangência da Linguagem de Programação Python em diversas áreas, Web, dispositivos portáteis, Cloud Computing e muitas outras. As vantagens da adoção da linguagens e suas características fundamentais, o comunidade e a mercado de trabalho que fazem parte do Ecossistema Python.
Programação Orientada a Objetos de Arduino com EclipseTchelinux
Slides utilizados para palestra no Tchelinux Erechim apresentada em novembro de 2018.
Também disponível em: https://www.slideshare.net/JosAntniodeFigueired/programao-orientada-a-objetos-de-arduino-com-eclipse
Táticas de obfuscação de código em projetos PHPMurilo Chianfa
Esta palestra aborda estratégias de obfuscação de código PHP como uma medida para fortalecer a defesa em profundidade de projetos críticos.
Serão apresentadas técnicas eficazes de ofuscação, destacando como esse processo pode dificultar significativamente a compreensão do código por atacantes e/ou indivíduos mal intencionados, promovendo uma abordagem mais robusta na preservação da integridade de sistemas PHP em ambientes de produção.
Apresentação sobre ferramentas que podem ser utilizadas para aumentar a produtividade e resolver problemas práticos do dia-a-dia no desenvolvimento de software, na quarta reunião presencial da comunidade NetPonto
Arduino + Python: produtividade ao extremoÁlvaro Justen
Slides da palestra que ministrei online no dia 06/09/2011 às 20h no LabDeGaragem.com, onde abordei introdução à linguagem Python, integração de Python com Arduino com e sem fio (através de USB, Ethernet, Bluetooth, Wi-Fi e ZigBee) e exemplifiquei essa integração com a apresentação de alguns projetos.
Gdg quality fest 2018 - Metralhando o próprio produto com tudo!Flávio Pimenta
Metralhando o próprio produto com tudo!
Os testes de performance muitas vezes negligenciados são importantes e podem fazer a empresa economizar muito em infraestrutura e na experiência de uso do cliente.
Pretendo mostrar uma demo rápida com o locust que é uma ferramenta nova, escalável e que vem ganhando bastante adoção.
Vou mostrar as principais dificuldades em realizar um teste de performance e como o Locust nos ajuda a resolvê-las.
Django: desenvolvendo aplicações web de maneira simples e rápida!
1. Django
Desenvolvendo aplicações web de maneira simples e rápida!
Felipe B. Queiroz
felipe.buarque@gmail.com
III Jornada Acadêmica de Informática - JAINF
Novembro de 2010
1 / 42
2. Quem sou eu?
Felipe Buarque (wally)
Mestrando pela UFPE
Entusiasta de software livre
Entusiasta da linguagem Python
Blog: www.felipewally.com.br
Twitter: @felipe_wally
2 / 42
3. Quem sou eu?
Felipe Buarque (wally)
Mestrando pela UFPE
Entusiasta de software livre
Entusiasta da linguagem Python
Blog: www.felipewally.com.br
Twitter: @felipe_wally
2 / 42
4. Quem sou eu?
Felipe Buarque (wally)
Mestrando pela UFPE
Entusiasta de software livre
Entusiasta da linguagem Python
Blog: www.felipewally.com.br
Twitter: @felipe_wally
2 / 42
5. Quem sou eu?
Felipe Buarque (wally)
Mestrando pela UFPE
Entusiasta de software livre
Entusiasta da linguagem Python
Blog: www.felipewally.com.br
Twitter: @felipe_wally
2 / 42
6. Quem sou eu?
Felipe Buarque (wally)
Mestrando pela UFPE
Entusiasta de software livre
Entusiasta da linguagem Python
Blog: www.felipewally.com.br
Twitter: @felipe_wally
2 / 42
7. Quem sou eu?
Felipe Buarque (wally)
Mestrando pela UFPE
Entusiasta de software livre
Entusiasta da linguagem Python
Blog: www.felipewally.com.br
Twitter: @felipe_wally
2 / 42
10. Um pouco de história...
Open Source script language
Guido Van Rossum (BDFL) - 1991
Monty Python’s Flying Circus
Ensino de programação
Simplicidade e fácil aprendizado
import this
5 / 42
11. Um pouco de história...
Open Source script language
Guido Van Rossum (BDFL) - 1991
Monty Python’s Flying Circus
Ensino de programação
Simplicidade e fácil aprendizado
import this
5 / 42
12. Um pouco de história...
Open Source script language
Guido Van Rossum (BDFL) - 1991
Monty Python’s Flying Circus
Ensino de programação
Simplicidade e fácil aprendizado
import this
5 / 42
13. Um pouco de história...
Open Source script language
Guido Van Rossum (BDFL) - 1991
Monty Python’s Flying Circus
Ensino de programação
Simplicidade e fácil aprendizado
import this
5 / 42
14. Um pouco de história...
Open Source script language
Guido Van Rossum (BDFL) - 1991
Monty Python’s Flying Circus
Ensino de programação
Simplicidade e fácil aprendizado
import this
5 / 42
15. Um pouco de história...
Open Source script language
Guido Van Rossum (BDFL) - 1991
Monty Python’s Flying Circus
Ensino de programação
Simplicidade e fácil aprendizado
import this
5 / 42
16. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
17. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
18. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
19. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
20. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
21. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
22. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
23. Características
Interpretada (bytecode + VM)
Multiplataforma
Tipagem forte e dinâmica
OO + procedural + funcional
Extensa biblioteca padrão
Sintaxe elegante, simples e clara
Blocos de código são delimitados por identação
Interpretador interativo: Shell
6 / 42
33. O que é Django?!
“Django is a high-level Python Web framework that encourages
rapid development and clean, pragmatic design.”
(djangoproject.com)
“...and is not a CMS system.”
(wally)
11 / 42
36. Origens...
Criado por Adrian Holovaty - PyCon 2005
Criado para ser um gerenciador de notícias
Licença BSD 1
Mantido pela Django Software Foundation desde 2008
1
http://en.wikipedia.org/wiki/BSD_licenses
14 / 42
37. Origens...
Criado por Adrian Holovaty - PyCon 2005
Criado para ser um gerenciador de notícias
Licença BSD 1
Mantido pela Django Software Foundation desde 2008
1
http://en.wikipedia.org/wiki/BSD_licenses
14 / 42
38. Origens...
Criado por Adrian Holovaty - PyCon 2005
Criado para ser um gerenciador de notícias
Licença BSD 1
Mantido pela Django Software Foundation desde 2008
1
http://en.wikipedia.org/wiki/BSD_licenses
14 / 42
39. Origens...
Criado por Adrian Holovaty - PyCon 2005
Criado para ser um gerenciador de notícias
Licença BSD 1
Mantido pela Django Software Foundation desde 2008
1
http://en.wikipedia.org/wiki/BSD_licenses
14 / 42
41. Princípios (... ou filosofias)
DRY (Don’t Repeat Yourself)
Baixo acoplamento
Plugabilidade e reusabilidade
Escrever menos código possível
Desenvolvimento rápido!
16 / 42
42. Princípios (... ou filosofias)
DRY (Don’t Repeat Yourself)
Baixo acoplamento
Plugabilidade e reusabilidade
Escrever menos código possível
Desenvolvimento rápido!
16 / 42
43. Princípios (... ou filosofias)
DRY (Don’t Repeat Yourself)
Baixo acoplamento
Plugabilidade e reusabilidade
Escrever menos código possível
Desenvolvimento rápido!
16 / 42
44. Princípios (... ou filosofias)
DRY (Don’t Repeat Yourself)
Baixo acoplamento
Plugabilidade e reusabilidade
Escrever menos código possível
Desenvolvimento rápido!
16 / 42
45. Princípios (... ou filosofias)
DRY (Don’t Repeat Yourself)
Baixo acoplamento
Plugabilidade e reusabilidade
Escrever menos código possível
Desenvolvimento rápido!
16 / 42
46. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
47. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
48. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
49. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
50. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
51. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
52. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
53. Características
Convention over configuration
Mapeamento Objeto-Relacional (ORM)
Interface administrativa automática (CRUD)
Tratamento de formulários
URLs elegantes
Sistema de templates
Sistema de cache
Internacionalização (i18n)
17 / 42
62. Arquivos de configuração
__init__.py - indica um pacote python
manager.py - tarefas administrativas
settings.py - configurações do projeto
urls.py - mapeamento das URLs do projeto
24 / 42
63. Vamos fazer algo...
No settings.py:
DATABASE.ENGINE = ‘django.db.backends.sqlite3’
DATABASE.NAME = ‘mural.db’
No diretório do projeto:
python manage.py runserver
No browser:
http://localhost:8000
25 / 42
64. Vamos fazer algo...
No settings.py:
DATABASE.ENGINE = ‘django.db.backends.sqlite3’
DATABASE.NAME = ‘mural.db’
No diretório do projeto:
python manage.py runserver
No browser:
http://localhost:8000
25 / 42
65. Vamos fazer algo...
No settings.py:
DATABASE.ENGINE = ‘django.db.backends.sqlite3’
DATABASE.NAME = ‘mural.db’
No diretório do projeto:
python manage.py runserver
No browser:
http://localhost:8000
25 / 42
68. Arquivos da aplicação
models.py - abstração do banco de dados / entidades do
sistema
tests.py - testes da aplicação
views.py - controller da aplicação
28 / 42
70. Instalando a aplicação...
No settings.py:
INSTALLED_APPS = (... ‘jainf.mural’)
Gerando o banco de dados:
python manage.py syncdb
30 / 42
71. Instalando a aplicação...
No settings.py:
INSTALLED_APPS = (... ‘jainf.mural’)
Gerando o banco de dados:
python manage.py syncdb
30 / 42
72. Django Admin
Aplicação plugável que vem por padrão no framework
Interface administrativa gerada com muito pouco trabalho
Acelera a produtividade mas perde em flexibilidade
31 / 42
73. Configurando o Django Admin...
Adicionar a aplicação django.contrib.admin ao
INSTALLED_APPS
Descomentar as seguintes linhas no arquivo urls.py:
# from django.contrib import admin
# admin.autodiscover()
# (r‘âdmin/’, include(admin.site.urls)
32 / 42
74. Configurando o Django Admin...
Adicionar a aplicação django.contrib.admin ao
INSTALLED_APPS
Descomentar as seguintes linhas no arquivo urls.py:
# from django.contrib import admin
# admin.autodiscover()
# (r‘âdmin/’, include(admin.site.urls)
32 / 42
75. Registrando o modelo no Admin...
Criar o arquivo admin.py dentro do diretório da aplicação
Sincronizar o banco de dados
No browser:
http://localhost:8000/admin
33 / 42
76. Registrando o modelo no Admin...
Criar o arquivo admin.py dentro do diretório da aplicação
Sincronizar o banco de dados
No browser:
http://localhost:8000/admin
33 / 42
77. Registrando o modelo no Admin...
Criar o arquivo admin.py dentro do diretório da aplicação
Sincronizar o banco de dados
No browser:
http://localhost:8000/admin
33 / 42
78. Generic views
Views genéricas disponibilizadas junto com o framework
Realizam ações básicas: listar, detalhar, cadastrar, editar,
excluir
34 / 42
80. Templates
Linguagem simples para desenvolvimento de templates
Utilização de tags e filters
Tag block proporciona reusabilidade de código
36 / 42
81. Configurando os templates...
Criar uma pasta chamada ‘templates’ na raiz do projeto
Adicionar o seguinte código ao settings.py:
import os
PROJECT_ROOT_PATH =
os.path.dirname(os.path.abspath(__file__))
TEMPLATE_DIRS =
(os.path.abspath(os.path.join(PROJECT_ROOT_PATH,
‘templates’)))
37 / 42
82. Configurando os templates...
Criar uma pasta chamada ‘templates’ na raiz do projeto
Adicionar o seguinte código ao settings.py:
import os
PROJECT_ROOT_PATH =
os.path.dirname(os.path.abspath(__file__))
TEMPLATE_DIRS =
(os.path.abspath(os.path.join(PROJECT_ROOT_PATH,
‘templates’)))
37 / 42
83. Configurando os templates...
Criar o arquivo templates/blog/artigo_list.html e
adicionar o conteúdo:
No browser:
http://localhost:8000
38 / 42
84. Configurando os templates...
Criar o arquivo templates/blog/artigo_list.html e
adicionar o conteúdo:
No browser:
http://localhost:8000
38 / 42