Skip to content

Dvdson/Python_3_na_WEB_com_Django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Python_3_na_WEB_com_Django

Projeto Realizadado seguindo os procedimentos da aula Python 3 na Web_com_Django. o Principal objetico deste projeto é esclarecer diferenças de versões apresentada para registrar futuras complicações

Índice

Ferramentas e Versões

Notas Pessoais

  • Django 2 carece de uma forma de deletar os dados do banco de dados ou um app completamente de forma segura ou simples, a vários métodos na internet sobre isso, mas nem um deles é uma extensão de comandos ou plugins para django que realize o procedimento de forma automatizada. Depois realizar uma pesquisa melhor sobre, talvez encontre uma forma.

Procedimentos De Aulas


Sessão 1


Índice

Até a aula 11
Descrição:

Criei este projeto a partir desta aula.

Procedimentos:
  1. Instalado Python 3.7.0b4
  2. Instalado Virtualenv
  3. Configurado Ambiente de desenvolvimentos com VirtualEnv, Simplemooc
  4. Instalado Django 2.0.5 No Ambiente Virtual e iniciado projeto SimpleMooc
  5. Feito configurações necessárias.
  6. Criado app core e feito modificações necessárias.
  7. Aplicado templates, arquivos files e css.
  8. Realizado herança com tags padrão do django.
Notas:
  • A versão do Django apresentada no Curso é diferente a usada neste Projeto
    • Curso: versão 1.x
    • Este Projeto: versão 2.0.5
  • Devido a diferença de Versão as seguintes alterações são necessárias
    • syncdb foi descontinuada usar os comandos migrate para tal
    • A forma de adicionar url ao url_patterns foi alterada:
      • A forma apresentada abaixo foi a indicada no curso:
        from django.conf.urls import patterns, include, url
        urlpatterns = patterns('',
          url(r'^$', 'SimpleMooc.core.views.home', name='home'),
          url(r'^contato/$', 'SimpleMooc.core.views.contact', name='contact')
        )
      • Deve-se usar a seguinte forma para a versão deste Projeto:
        from django.urls import path
        from simplemooc.core.views import home, contact
        
        app_name = 'core'
        urlpatterns = [
            path('', home, name="home"),
            path('contact/', contact, name="contact"),
        ]
      • Incluir urls de outros arquivos:
        from django.contrib import admin
        from django.urls import path, include
        
        urlpatterns = [
            path('', include('simplemooc.core.urls', namespace='core')),
            path('admin/', admin.site.urls)
        ]

Sessão 2


Índice

  1. Aula 12
  2. Aula 13
  3. Aula 14
  4. Aula 15
  5. Aula 16
  6. Aula 17
  7. Aula 18

Aula 12
Descrição:

Esta aula tem o objetivo criar models para manipular o banco de dados sem a utilização de comandos de banco de dados

Procedimentos:
  1. Criar novo app "courses", com o objetivo de gerenciar os cursos do simplemooc
  2. Criar Models do app courses.
  3. Atualizar o banco de dados, com os modelos criados, uso de migrate.
Notas:
  • A Objetos do tipo image (models.ImageField) precisam da biblioteca Pillow que não esta instalada por padrão, para instalar é preciso usar o comandos:

    $ pip install Pillow


Aula 13
Descrição:

Demonstração dos metodos usados dentro da classe models. nem um procedimento de alteração nesta aula. Apenas demonstração dos métodos do django.

Procedimentos:
Notas:
  • Não apagar o banco de dados como dito em aula, A nova versão de Django faz comparação de informações com o banco e muda, sem precisar remover diretamente
  • Método save() em models, é extremamente importante pois é ele que lança a informação do modelo no banco de dados do Django.
  • Delete() remove os dados.
  • Os objetos models são relacionados as suas respectivas linhas de banco de dados no django
  • Por enquanto não foi ensinado como modificar models via uso de id.

Aula 14
Descrição:
Procedimentos:
  1. Procedimento alternativo ao sqlall

    $ py manage.py showmigrations
    • Este comando irá mostrar a lista de migrations executadas agrupadas por app
    • Procure seu app e lá terá todos os nomes das modificações feitas pelas migrações, então execute:
    $ py manage.py sqlmigrate app_name migrate_name
    • O resultado será o comando sql para realizar a migração do código.
  2. O acesso e manipulação do dos objetos do django dar-se na utilização do objeto do model_name.objects.método(), consultar tudo (all()), filtrar (filter(lookups)).

Notas
  • Mais uma vez não apagar banco de dados como mostrado na aula.
  • Por causa da Atualização do Django, para realizar o equivalente a sqlall da versão antiga usa-se este procedimento.
  • [Importante] Acessando Model.objects.all() ele retorna um modo de acesso a todos os objetos criados porém ele não faz a consulta no BD ainda, para isso usa-se os métodos nele.
  • [Importante] O Método Model.objects.filter() retorna o mesmo modo de acesso, porém filtrado via lookups.
  • model_name.objects é um object tipo manager.

Aula 15
Descrição:

Aula sobre Custom Manager

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • É possível fazer um controle lógico avançado na consulta ao banco com models.Q.
  • Detalhe, a consulta é sensível a caixa.

Aula 16
Descrição:

Aula Sobre admin e como fazer um admin administrar models criados.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • Utilizar o admin.site.register dentro de admin.py, para que o user admin possa alterar via interface.

Aula 17
Descrição:

continuação da aula sobre adimin.

Procedimentos:
Notas
  • Use a Função __str__ para mudar a informação de nome apresentada na interface de usuário.
  • Classe META dentro do model criado é usado para mudar os dados META do modelo.
  • Um ModelAdmin pode ser usado para mudar a interface da model associada a mesma.

Aula 18
Descrição:

Aula sobre edição de models adicionados ao admin via interface.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • prepopulated_fields é uma variável interessante para dar valores iniciais as variáveis de model, ao que parece usa um array associativo.

A partir desta aula e do commit "aula 18" o repositório do git foi mudado para incluir apenas o projeto DJANGO.
Ou seja a subpasta simplemooc agora é a pasta padrão.

Sessão 3


Índice

  1. aula 19
  2. aula 20
  3. aula 21
  4. aula 22
  5. aula 23
  6. aula 24
  7. aula 25
  8. aula 26
  9. aula 27
  10. aula 28
  11. aula 29
  12. aula 30
  13. aula 31

Aula 19
Descrição:

Criando a interface de views dos Cursos

Procedimentos:
  1. Quando solicitar para edição de url, usar esta [referencia](#notas 11) como procedimento
Notas

Aula 20
Descrição:

Criando uma listagem dos cursos na Página Cursos

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas

Aula 21
Descrição:

Requisição de imagens do banco de dados para a interface html.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • A imagem carregada pelos modulos são copiados em uma pasta "/media/"
  • É preciso configurar o arquivo settings para poder "servir" os dados dentro de media
  • Estranhamente, a pasta media fica no projeto principal do Django, não na pasta do app

Aula 22
Descrição:

Criando a página de um único curso

Procedimentos:
  1. NÃO apagar a Tabela, Usar o migrate para auterar o banco.
  2. Expressão regular em URL foi mudada para URLDispacher, logo o procedimento foi alterado. O modelo é apresentado em notas, quanto ao que acontece depois a aula segue igual.
Notas
  • A diferença no uso de expressão regular é mostrado a seguir
    • Apresentado em aula:
       # File /courses/urls.py
       from django.conf.urls import patterns, include, url
      
       urlpatterns = patterns('simplemooc.courses.views',
           url(r'^$', 'index', name='index'),
           url(r'^(?P<pk>\d+)/$', 'details', name='details')
       )
    • Código em Django 2:
       # File /courses/urls.py
       from django.urls import path
       from simplemooc.courses.views import index, details
      
       app_name = 'courses' # namespace
       urlpatterns = [
           path('', index, name="index"),
           path('<int:pk>', details, name='details')# acredito que tenha sido melhor usar slug ao invés da id do curso.
       ]
  • Acredito que exista uma forma mais adequada de tratar expressões regulares em django 2, porém seguirei a aula.

Aula 23
Descrição:

Editando a página de curso

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas

Aula 24
Descrição:

Alterando a expressão regular para aceitar slugs como url e definindo get_absolute_url.

Procedimentos:
  1. como apresentado em notas 22 procedimento de expressão regular na url é diferente ver nas notas a baixo.
Notas
  • Como dito na aula anterior, URLDispacher foi atualizado, permitindo um expressão regular melhor neste caso, a expressão regular com slug muda para apenas slug
    • Apresentado em aula:

           url(r'^(?P<slug>[\w_-])/$', 'details', name='details')
    • Código em Django 2:

           path('<slug:slug>', details, name='details')

Aula 25
Descrição:

Apenas uma introdução a forms do django

Procedimentos:
  1. Nem um procedimento.
Notas
  • Django tem sua própria formulação de formulários, o que quer dizer que são criados via classes similar ao models, porém direcionado a exibição e captura de dados no site.

Aula 26
Descrição:

Criando um model e manipulando via shell

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas

Aula 27
Descrição:

Uso de forms no template do django

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas

Aula 28
Descrição:

Submissão de formulários do Django

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • Sempre que houver uma requisição na url dos detalhes do curso, django vai invocar o método details() em Course/views.py como definido em course/urls.py e lá pode ser tratado o tipo de request verificando request.method.
  • Quando o método is_valid() é executado, o acesso aos campos de form acontecem apenas via método cleaned_data que é um array associativo.

Aula 29
Descrição:

Introdução para envio de E-mail, usando a submissão de formulários.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • É preciso adicionar os dados em settings.py.
    • uma configuração a se prestar atenção é:

      # padrão de Django, define que irá usar um servidor smtp para lançar o email
      # TODO procurar como configurar o servidor padrão smtp
      EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
      # para exibir no console, exemplo utilizado neste projeto
      EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

Aula 30
Descrição:

Configurando exibição envio de e-mail.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
  • Não escreva funções muito grandes na views.py, o ideal é que ela seja a mais limpa possível
  • send_mail é uma função padrão de django, ver comentários para mais informações em forms para mais informações
  • As informações de envio de email podem ser encontradas aqui

Aula 31
Descrição:

Criando uma organização de envio de e-mails com Templates

Procedimentos:
  1. O instrutor da aula criou o arquivo /core/mail.py e o editou completamente, antes da aula.
  2. Deve-se baixar e extrair o mail.py do arquivo no site para sua pasta core.
Notas
  • Este método, lança um modelo html como email, podendo gerar e-mails interativos.

Sessão 4


Índice

  1. Aula 32

Aula 32
Descrição:

Introdução a sistemas de usuário.

Procedimentos:
  1. Nem um procedimento.
Notas
  • A biblioteca que Django usa para sistemas de usuário é contrib.auth
Aula 33

Descrição:

Como criar um url para logins do django.

Procedimentos:
  1. E de novo, não usar uma string em urlpatterns.
  2. É preciso importar login do Django para aplicar em path.
    • forma de importar
    from django.contrib.auth.views import login
Notas
Aula 34

Descrição:

Criando o template de cadastro.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
Aula 35

Descrição:

Aplicando Formulários no template de cadastro.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
Aula 36

Descrição:

Configurando o RegisterForm para conter e aceitar email no cadastro

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
Aula 37

Descrição:

Configurando RegisterForm para aceitar apenas e-mail único.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas
Aula 38

Descrição:

Criando e adicionando o logout no template.

Procedimentos:
  1. Nem um procedimento que requer atenção. Igual a aula.
Notas

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published